【问题标题】:How to get response data outside promise chain of Fetch? [duplicate]如何在 Fetch 的承诺链之外获取响应数据? [复制]
【发布时间】:2017-05-06 22:45:36
【问题描述】:

我正在使用 fetchApi 从我的 API 获取数据。 在我的 RequestHelpers.js 中,我执行此代码

module.exports = {
    fetchQuizCollection(){
      return fetch(HOST+API_KEY)
        .then((response) => response.json())
        .then((responseData) => {
          let gameData = responseData
          console.log(responseData) //It work
          return responseData
        })
      .done();
    }
}

我在另一个文件中调用该函数,我无法获得我的 responseData

    let sampleQuiz = RequestHelpers.fetchQuizCollection()
    console.log(sampleQuiz) //undefined 

有什么方法可以在 promise 之外获取数据?

【问题讨论】:

    标签: react-native promise es6-promise fetch-api


    【解决方案1】:

    您将异步代码视为同步代码。 fetchQuizCollection() 是异步的,因此它返回的数据在您的日志记录代码运行时不可用。您必须等到所有.fetch() 函数完成。

    只需让fetchQuizCollection() 通过添加另一个return 来返回一个承诺,如下所示

    return fetchQuizCollection(){
      return fetch(HOST+API_KEY)
        .then((response) => response.json())
        ...
    

    您可以在.then() 函数中访问sampleQuiz

    let sampleQuiz = RequestHelpers.fetchQuizCollection()
        .then((sampleQuiz) => {
            console.log(sampleQuiz);
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 2020-11-09
      • 1970-01-01
      相关资源
      最近更新 更多