_.each中的异步操作结束

时间:2014-03-11 19:23:57

标签: javascript node.js underscore.js

我在_.each中的迭代器函数中发生了异步操作。在异步操作的回调结束后,有没有办法调用另一个函数。

_.each(A, function (a){ 
    B(a, function (c, d) { 
        // statements
    }
} 

我希望在A中的所有项目之后做一些事情.B中的回调函数已经完成。我在节点js服务器中使用它。

2 个答案:

答案 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();
    });
});