问题:
当 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中文网其他相关文章!