Javascript - 等待多个异步回调返回?

Ste*_*all 14 javascript asynchronous underscore.js

处理多个异步回调的最佳方法/库是什么?现在,我有这样的事情:

_.each(stuff, function(thing){
   async(thing, callback);
});
Run Code Online (Sandbox Code Playgroud)

我需要在为每个元素触发回调后执行一些代码stuff.

最干净的方法是什么?我愿意使用库.

Jor*_*ing 28

由于你已经在使用Underscore,你可能会看一下_.after.它完全符合您的要求.来自文档:

    _.after(count, function)

创建一个只在首次被调用计数次数后才能运行的函数版本.在继续之前,您可以将异步响应分组,以确保所有异步调用都已完成.


Jam*_*son 12

有一个很棒的库Async.js可以帮助解决许多异步和流控制助手这样的问题.它提供了几个forEach函数,可以帮助您为数组/对象中的每个项运行回调.

退房:https: //github.com/caolan/async#forEach

// will print 1,2,3,4,5,6,7,all done

var arr = [1,2,3,4,5,6,7];

function doSomething(item, done) {
  setTimeout(function() {
    console.log(item);
    done(); // call this when you're done with whatever you're doing
  }, 50);
}

async.forEach(arr, doSomething, function(err) {
    console.log("all done");
});
Run Code Online (Sandbox Code Playgroud)