如何获取Fetch承诺链之外的响应数据?

时间:2016-12-21 13:31:38

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

我使用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 

有没有办法让数据超出承诺范围?

1 个答案:

答案 0 :(得分:2)

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

fetchQuizCollection()通过添加另一个return返回承诺

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

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

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