如何在 Fetch 的承诺链之外获取响应数据? [复制]
Posted
技术标签:
【中文标题】如何在 Fetch 的承诺链之外获取响应数据? [复制]【英文标题】:How to get response data outside promise chain of Fetch? [duplicate] 【发布时间】: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 之外获取数据?
【问题讨论】:
【参考方案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);
);
【讨论】:
以上是关于如何在 Fetch 的承诺链之外获取响应数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 fetch 在 javascript 中获取 php 错误消息
如何从 fetch javascript 请求的响应中获取数据