實現 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中文網其他相關文章!