在 Array.map 中使用 Async/Await
尝试在 Array.map 中使用 async/await 时,用户经常会遇到类似的错误以下内容:
“输入 'Promise
出现此错误是因为等待函数必须解析 Promise。但是,Array.map 通常返回 Promise 数组,而不是单个 Promise。
解决方案
要解决此问题,请转换 Array 返回的 Promise 数组。使用 Promise.all 映射到单个 Promise。仅当其可迭代参数中的所有 Promise 都已解决时,Promise.all 才会解析。
这是有问题代码的修改版本:
const arr = [1, 2, 3, 4, 5]; const results: number[] = await Promise.all(arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }));
通过利用 Promise.all,Promise 数组被解析为单个 Promise,允许 wait 正确运行,消除“Type 'Promise
其他选项
根据具体用例,考虑使用 Promise.allSettled、Promise.any 或 Promise。 race 而不是 Promise.all。然而,在上述情况下,Promise.all 通常是最合适的选择。
以上是在 Array.map 中使用 Async/Await 时,如何解决'类型'Promise[]'不可分配给类型'number[]'”?的详细内容。更多信息请关注PHP中文网其他相关文章!