問題:
當forEach 循環中的所有非同步操作完成時,如何執行操作都完成時,如何執行操作都完成時,如何執行操作回調完成了嗎?
解決方案:
1.使用簡單計數器:
將計數器 itemsProcessed 初始化為 00。在每個非同步函數的回調中遞增計數器。當 itemsProcessed 達到數組總長度時,呼叫「全部完成」回調。
2.使用 ES6 Promises:
使用 Promise.all 建立表示每個非同步操作的 Promise 物件陣列。當所有 Promise 完成後,將執行最終回調。
3.使用非同步函式庫:
利用像 async 這樣的非同步函式庫來提供表達非同步完成回呼的機制。
修訂範例(計數器方法):
<code class="javascript">function callback() { console.log("All done!"); } var itemsProcessed = 0; [1, 2, 3].forEach((item, index, array) => { asyncFunction(item, () => { itemsProcessed++; if (itemsProcessed === array.length) { callback(); } }); });</code>
修改後的預期輸出:
3 done 1 done 2 done All done!
以上是如何保證forEach循環中所有非同步操作完成後執行回呼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!