問題陳述
我們如何確保循環同步迭代,執行每個迭代的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中文網其他相關文章!