首頁 >web前端 >js教程 >如何使用 Promise.all 管理和等待多個 Promise?

如何使用 Promise.all 管理和等待多個 Promise?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-24 17:37:11420瀏覽

How to Use Promise.all to Manage and Await Multiple Promises?

如何處理多個Promise 並等待其完成

使用非同步程式碼時,通常需要處理多個Promise 並等待它們一切都需要在繼續之前完成。本文將引導您使用 Promise.all 來實現這一目標。

Promise.all 簡介

Promise.all 接受一組Promise 並返回一個可解析的Promise當所有輸入承諾都已解決時,或者如果其中任何一個拒絕,則拒絕。

重組doSomeAsyncStuff 返回Promise

要讓doSomeAsyncStuff 與Promise 搭配使用,請修改如下:

function doSomeAsyncStuff() {
    return new Promise((resolve) => {
        editor.on('instanceReady', function(evt) {
            doSomeStuff();
            resolve(true);
        });
    });
}
等待所有非同步任務

一旦 doSomeAsyncStuff 回傳一個承諾,你可以使用 Promise.all 等待它的所有實例完成。這是程式碼的改進版本:

此程式碼從每次呼叫 doSomeAsyncStuff 時建立一個承諾陣列。 Promise.all 接受這個陣列並等待所有的 Promise 解析。一旦所有 Promise 都解決,就會執行 then 回調,讓您可以執行依賴非同步任務結果的操作。
const promises = [];

for (let i = 0; i < 5; i++) {
    promises.push(doSomeAsyncStuff());
}

Promise.all(promises)
    .then(() => {
        for (let i = 0; i < 5; i++) {
            doSomeStuffOnlyWhenTheAsyncStuffIsFinish();    
        }
    })
    .catch((e) => {
        // Handle errors here
    });

以上是如何使用 Promise.all 管理和等待多個 Promise?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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