我使用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
有没有办法让数据超出承诺范围?
答案 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);
});