在代码片段中:
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[]'”。此错误表示预期类型 (number[]) 和实际类型 (Promise
问题
问题的出现是因为你试图等待一个数组Promise (Promise
解决方案
要纠正此错误,您可以使用 Promise.all 将 Promise
通过使用 Promise.all,您可以将 Promise 数组转换为单个 Promise,从而使您能够等待所有 Promise 的解决
var arr = [1, 2, 3, 4, 5]; var results: number[] = await Promise.all(arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }));
或者,根据您的具体用途考虑使用 Promise.allSettled、Promise.any 或 Promise.race 案件。但是,对于您提供的场景,Promise.all 仍然是最合适的选择。
以上是为什么 `await arr.map()` 失败,`Promise.all` 如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!