首頁 >web前端 >js教程 >如何保證 Promise 操作同步循環執行?

如何保證 Promise 操作同步循環執行?

Linda Hamilton
Linda Hamilton原創
2024-11-03 00:13:291058瀏覽

How to Ensure Synchronous Loop Execution with Promise Operations?

用Promise 協調循環

問題陳述

我們如何確保循環同步迭代,執行每個迭代的Promise 及其後續日誌操作(logger.log(res)) 的順序是否正確?

解決方案

避免PromiseWhile

雖然PromiseWhile 鏈式操作的執行順序。

使用Reduce 進行序列化

維持期望的結果為了排序,我們可以利用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>

範例用法

<code class="javascript">// Compose an array of email addresses
var arrayOfEmailAddys = [...];

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

好處

這種方法消除了PromiseWhile變數和條件函數。此外,它還簡化了程式碼並確保 Promise 執行的正確順序。

以上是如何保證 Promise 操作同步循環執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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