'forEach'迭代后异步回调执行
查询:
如何回调在“forEach”循环的所有异步回调完成后执行?
解决方案:
Array.forEach 本身并不支持此功能。但是,有几种替代方法可以实现此目标:
1。计数器:
使用计数器跟踪已处理项目的数量。在每个异步操作的回调中递增计数器,并在计数器达到项目总数时调用最终回调。
2.承诺(ES6):
a。顺序执行:
按顺序链式 Promise 保证异步任务的同步执行,确保每个项目按照它们在数组中出现的顺序进行处理。
b.并行执行:
使用 Promise.all() 方法并行执行所有异步任务,不保证执行顺序。
3.异步库:
Async.js 等热门库提供了表达所需行为的机制,例如 Async#series() 和 Async#parallel()。
原始示例实现(同步):
问题中的原始代码示例了同步场景,可以使用以下实现:
posts.foreach(function(v, i) { res.write(v + ". index " + i); }); res.end();
以上是如何在“forEach”循环内的所有异步回调完成后执行回调?的详细内容。更多信息请关注PHP中文网其他相关文章!