首頁 >web前端 >js教程 >在 Array.map 中使用 Async/Await 時,如何解決「型別『Promise[]』不可指派給型別『number[]』」?

在 Array.map 中使用 Async/Await 時,如何解決「型別『Promise[]』不可指派給型別『number[]』」?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-11 01:04:09862瀏覽

How to Resolve

在Array.map 使用Async/Await

嘗試在Array.map 使用async/await 時,使用者經常會遇到類似的錯誤以下內容:

“輸入'Promise[]'不是可指派給型別“number[]”,型別“Promise”。但是,Array.map 通常傳回 Promise 數組,而不是單一 Promise。

要解決此問題,請轉換 Array 傳回的 Promise 陣列。使用 Promise.all 對應到單一 Promise。只有當其可迭代參數中的所有 Promise 都已解決時,Promise.all 才會解析。

這是有問題程式碼的修改版本:

透過利用Promise.all,Promise 陣列被解析為單一Promise,允許wait 正確運行,消除「Type 'Promise[]' 不可分配”輸入“number[]”錯誤。
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.allSettled、Promise.any 或 Promise。 race 而不是 Promise.all。然而,在上述情況下,Promise.all 通常是最合適的選擇。

以上是在 Array.map 中使用 Async/Await 時,如何解決「型別『Promise[]』不可指派給型別『number[]』」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn