【问题标题】:End of an async action inside _.each_.each 中的异步操作结束
【发布时间】:2023-03-06 04:50:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript node.js underscore.js


    【解决方案1】:

    如果我理解你的话,你想为数组中的每个项目执行一个异步函数,然后在所有异步调用完成后调用另一个函数。为此,您应该使用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

    【讨论】:

    • 难道我们不能访问任何variable,它之前在最终function() 中的任何callbacks 中设置?
    【解决方案2】:

    您可以使用像async 这样的包。但是,如果您只想一次性使用,那么简单的方法是使用简单的计数器:

    var i = 0;
    var done = function() {
        // Do Stuff
    };
    
    _.each(A, function(a) {
        B(a, function(c, d) {
            if ((i += 1) == A.length) done();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2019-09-14
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多