首页  >  文章  >  web前端  >  如何保证forEach循环中所有异步操作完成后执行回调?

如何保证forEach循环中所有异步操作完成后执行回调?

Linda Hamilton
Linda Hamilton原创
2024-11-04 14:17:02984浏览

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

异步 forEach 完成回调

问题:

当 forEach 循环中的所有异步操作都完成时,如何执行回调完成了吗?

解决方案:

1.使用简单计数器:

将计数器 itemsProcessed 初始化为 0。在每个异步函数的回调中递增计数器。当 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