【发布时间】:2019-03-04 13:41:12
【问题描述】:
我正在尝试编写一个异步函数,该函数进行多次提取,等待全部完成,然后将 JSON 结果作为数组返回。这是我目前所拥有的:
file1.js
const searchResults = await Api.search(searchText);
api.js
async function search(searchText) {
return util.executeFetchAll([
`/searchA/${searchText}`,
`/searchB/${searchText}`,
`/searchC/${searchText}`
]);
}
util.js
async function executeFetchAll(urls) {
const promises = urls.map(url => fetch(url));
const responses = await Promise.all(promises);
debugger;
}
当执行在调试器处暂停并且我使用 Chrome 的开发工具检查 responses 时,它正确地是 3 个 Response 对象的数组,但如果我检查 responses[0].json(),它会奇怪地在控制台中返回 Promise {<pending>}对象。
我错过了什么?我正在等待Promise.all,这应该意味着所有承诺都在我的调试器行之前解决。那么为什么 json() 方法奇怪地显示 Promise 对象处于挂起状态?
谢谢。
【问题讨论】:
标签: javascript json promise async-await fetch