【发布时间】:2019-10-19 06:09:39
【问题描述】:
我正在尝试使用 Promise.all() 函数将一堆请求等待所有请求完成,而不是像这样手动完成所有获取:
var data = await Promise.all([
fetch('https://jsonplaceholder.typicode.com/posts').then((response) => response.json()),
fetch('https://jsonplaceholder.typicode.com/albums').then((response) => response.json()),
fetch('https://jsonplaceholder.typicode.com/users').then((response) => response.json())
]);
我想让它动态化,像这样发出 N 个获取请求:
let promiseList = [];
try {
for (let url of requestUrls) {
promiseList.push(fetch(url).then((response) => response.json()));
}
var data = await Promise.all(promiseList);
但我在await Promise.all() 行中收到此错误Uncaught SyntaxError: await is only valid in async function,如果我删除等待,我会收到Promise {<pending>} 和
(index):79 error:TypeError: data is not iterable
这是我的完整代码:https://jsfiddle.net/ham7g82e/1/
从这些获取中获取数据我缺少什么?
【问题讨论】:
-
错误信息的哪一部分你不明白?
-
你应该使用
.map() -
你的
await的父函数没有async运算符如async function myFunc(){ ... },我们需要看看你是如何定义包装函数的。
标签: javascript asynchronous promise