首頁 >web前端 >js教程 >如何在保持順序的同時實現 Promise 迴圈的同步執行?

如何在保持順序的同時實現 Promise 迴圈的同步執行?

Patricia Arquette
Patricia Arquette原創
2024-10-29 14:01:02680瀏覽

How to Achieve Synchronous Execution of Promise Loops while Preserving Order?

實現 Promise 循環的同步執行

如何確保循環迭代期間 Promise 呼叫及其鍊式日誌記錄操作的同步性?使用 PromiseWhile() 的初始方法似乎很有前途,但引發了對保留正確執行順序的擔憂。

相反,請考慮利用 Promise 的固有功能來完成此任務。透過將問題定義為一系列非同步呼叫來獲取使用者詳細資訊並維護原始回應順序,我們可以利用 Array.prototype.reduce() 建立扁平的 .then() 鏈。

解決方案:

以下程式碼舉例說明了此方法:

<code class="javascript">function fetchUserDetails(arr) {
    return arr.reduce(function(promise, email) {
        return promise.then(function() {
            return db.getUser(email).done(function(res) {
                logger.log(res);
            });
        });
    }, Promise.resolve());
}</code>

此函數接受電子郵件地址陣列並傳回 Promise。 reduce() 函數迭代數組並為每封電子郵件執行 getUser 承諾。結果將同步記錄在 did() 回呼中。

呼叫函數:

要呼叫函數,請填入電子郵件地址陣列(arrayOfEmailAddys) 並使用如下所示:

<code class="javascript">fetchUserDetails(arrayOfEmailAddys).then(function() {
    console.log('all done');
});</code>

此程式碼建立一個線性Promise 鏈,確保每個Promise 都按順序解析,並且日誌記錄操作按正確的順序執行。

以上是如何在保持順序的同時實現 Promise 迴圈的同步執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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