首页 >web前端 >js教程 >如何实现异步 forEach 循环的完成回调?

如何实现异步 forEach 循环的完成回调?

DDD
DDD原创
2024-11-04 13:09:01704浏览

How to Implement a Completion Callback for Asynchronous forEach Loops?

异步 forEach 回调:实现完成回调

在使用像 forEach 这样的异步循环的场景中,经常需要触发一个所有异步操作完成后回调。本指南介绍了实现此功能的几种方法。

1.使用简单的计数器

此技术使用一个计数器,每次处理一个项目时该计数器都会递增。当计数器达到项目总数时,将调用完成回调。

function callback () { console.log('all done'); }

var itemsProcessed = 0;

[1, 2, 3].forEach((item, index, array) => {
  asyncFunction(item, () => {
    itemsProcessed++;
    if(itemsProcessed === array.length) {
      callback();
    }
  });
});

2.利用 ES6 Promises

Promise 可以创建顺序 Promise 链,确保异步任务的同步执行。

function asyncFunction (item, cb) {
  setTimeout(() => {
    console.log('done with', item);
    cb();
  }, 100);
}

let requests = [1, 2, 3].reduce((promiseChain, item) => {
    return promiseChain.then(() => new Promise((resolve) => {
      asyncFunction(item, resolve);
    }));
}, Promise.resolve());

requests.then(() => console.log('done'))

3.使用异步库

像“async”这样的库提供了表达所需功能的机制。具体实现会根据选择的库的不同而有所不同。

以上是如何实现异步 forEach 循环的完成回调?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn