每个

时间:2016-12-20 13:01:04

标签: node.js asynchronous

我有一个函数在数组上调用async.each。在asycn.each中,有一个函数在第一个函数中传递的数据上调用async.each。

var f1 = function(){
      var b = [o1,o2,o3,o4,o5,o6....];
      async.forEach(b, function(obj, cb){
             f2(obj, function(){
                 cb();
             })
      }, function(err){
      })
};

var f2 = function(obj, c2){
       async.forEach(obj, function(obj2,cb){
          // some db operation
          return dbData;
          cb();
}, function(){
       // do asynch operation on dbData and update value in db
})
};

现在,我的疑问是,当f2对f1中传递的第一项执行async.forEach时,调用回调并且回调使用obj执行某些操作,后者在f2中传递。但由于这是并行执行的,当调用第一项的回调时,它是否具有相同的obj对象以继续操作,或者obj的值可能不同,因为其他asych.each任务已通过相同的函数调用。

1 个答案:

答案 0 :(得分:1)

首先执行函数f1,执行函数f2后执行。

var f1 = function(){
          var b = [o1,o2,o3,o4,o5,o6....];
          async.forEach(b, function(obj, cb){
                 f2(obj, function(){
                     cb();
                 })
          }, function(err){
          })
    };
        async.eachSeries(f1, f2, function (err) {
            if (err) {
                res.json({status: 0, msg: "OOPS! How is this possible?"});
            }
            res.json("Series Processing Done");
        })
       var f2 = function(obj, c2){
           async.forEach(obj, function(obj2,cb){
              // some db operation
              return dbData;
              cb();
    }, function(){
           // do asynch operation on dbData and update value in db
    })