常見場景涉及循環一系列 Promise 呼叫(例如 API 請求),以確保維持執行順序。 Bluebird 透過 PromiseWhile 函數提供了一個解決方案。但是,循環內 logger.log(res) 呼叫的順序有問題。
不要使用PromiseWhile,請考慮以下方法:
<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>
這段代碼:
使用電子郵件地址陣列呼叫fetchUserDetails 函數:
<code class="javascript">// Compose an array of email addresses const arrayOfEmailAddys = [...]; fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });</code>
這種方法消除了對遞歸、外部計數器和複雜條件函數的需要,同時保持了logger.log(res) 呼叫所需的同步。
以上是JavaScript 中 Promise 迭代時如何實現同步日誌記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!