【问题标题】:Returning the value of a promise to another function [duplicate]将承诺的值返回给另一个函数[重复]
【发布时间】:2017-09-12 20:17:14
【问题描述】:

我正在尝试在 renderSelect 中获取 PromiseValue。 (在tmp

问题是我得到了一个承诺,这是正常的行为。但我不明白如何获取 Promise 中的值以便使用它们。

我有一个ApiService 类如下

handleResponse(response) {
  if (response.status >= 200 && response.status < 300) {
    return response.json();
  }
  return response.json()
    .then((res) => {
      throw new Error(res.message);
    },
    () => {
      throw new Error();
    });
}


get(url) {
  return fetch(`${this.API_URL}${url}`, {
    method: 'GET',
    headers: this.headers,
  })
    .then(response => this.handleResponse(response));
}

和我的.jsx 一样

const getOptions = (contractor_employee_id) => {
  const apiService = new ApiService()
  return apiService
    .get(`some_url`)
    .then(
      response => {
        return ["toto", "tata", "titi"]
    },
    err => (console.log("Failed"))
    );
};

const renderSelect = (field) => {
  const tmp = getOptions(field.id)
  console.log(tmp)

【问题讨论】:

    标签: reactjs promise


    【解决方案1】:

    Promise 是异步的。如果你想以同步的方式返回 Promise 结果,请使用 async / await。

    const renderSelect = async (field) => {
        const tmp = await getOptions(field.id)
        console.log(tmp)
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 Javascript PromiserenderSelect 返回一个承诺

      const getOptions = (contractor_employee_id) => {
        const apiService = new ApiService()
        return new Promise((resolve, reject) => {
              apiService
                  .get(`some_url`)
                  .then(
                    response => {
                      resolve(["toto", "tata", "titi"]);
                  },
                  err => (console.log("Failed") reject('failed');)
                  );
              };
      
             })
      }
      
      const renderSelect = (field) => {
        getOptions(field.id).then((res) => {
            console.log(tmp);
        })
      }
      

      【讨论】:

        猜你喜欢
        • 2020-08-26
        • 1970-01-01
        • 2021-06-29
        • 1970-01-01
        • 2015-12-16
        • 2015-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多