给出以下代码:
var arr = [1,2,3,4,5];
var results: number[] = await arr.map(async (item): Promise<number> => {
await callAsynchronousOperation(item);
return item + 1;
});
产生以下错误:
TS2322:类型'Promise <number> []'不能分配给类型'number []'。类型'Promise <number>不可分配给类型'number'。
我该如何解决?怎样才能让async await
和Array.map
一起工作?
以下解决方案以异步方式处理数组的所有元素并保留顺序:
也codepen。
请注意,我们仅“等待” Promise.all。我们多次调用calc而不使用“ await”,并且立即收集了一系列未解决的Promise。然后Promise.all等待所有它们的解析,并按顺序返回具有已解析值的数组。