首頁 >web前端 >js教程 >如何保證forEach循環中所有非同步操作完成後執行回呼?

如何保證forEach循環中所有非同步操作完成後執行回呼?

Linda Hamilton
Linda Hamilton原創
2024-11-04 14:17:021025瀏覽

How to Ensure a Callback is Executed After All Asynchronous Operations in a forEach Loop Complete?

非同步forEach 完成回呼

問題:

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

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