我在_.each中的迭代器函数中发生了异步操作。在异步操作的回调结束后,有没有办法调用另一个函数。
_.each(A, function (a){
B(a, function (c, d) {
// statements
}
}
我希望在A中的所有项目之后做一些事情.B中的回调函数已经完成。我在节点js服务器中使用它。
答案 0 :(得分:0)
如果我理解你,你想为数组中的每个项执行异步函数,然后在所有异步调用完成后调用另一个函数。为此,您应该使用async模块:
async.each(arr, function(item, callback){
// some asynchronous function executed for every item in Arr
// call callback function when done
callback();
, function(){
// executed after all the iterator functions have finished
}
有关详细信息和示例,请参阅async documentation。
答案 1 :(得分:0)
您可以使用async之类的套餐。如果你只想要一次性,那么简短的方法是使用一个简单的计数器:
var i = 0;
var done = function() {
// Do Stuff
};
_.each(A, function(a) {
B(a, function(c, d) {
if ((i += 1) == A.length) done();
});
});