Node.js 了解Asycn

Node.js 了解Asycn,node.js,asynchronous,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(); })

我有一个通过数组调用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时,将调用回调函数,回调函数将对f2中传递的obj执行一些操作。但由于这是并行执行的,当调用第一项的回调时,它是否会有相同的obj对象继续操作,或者obj的值可能与其他asych不同。每个任务都是通过相同的函数调用的。

首先执行函数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){
      })
};

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
})
};
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
    })

这不是我的用例。F1必须为每个数组处理调用F2。处理完所有F2后,返回F1回调。我只想知道f2中的回调函数是会得到在f1中传递的obj还是其他obj,因为它是并行处理的。根据我的理解,您将执行函数f1,然后执行函数f2。这些手术一个接一个地进行。先是f1,然后是f2。否。这是与数组相关的db操作。我有10个不同的obj需要更新,它们都是同时发生的。所以f1得到第一个obj,然后在f2中执行操作,类似于其他操作。它不是一个接一个的.async.series([function f1(){…这里执行的第一个函数,然后是cb from here},function f2(){…这里执行的第二个函数。}]);希望这有帮助。在f2的forEach中,
cb()
从未被调用,因为
返回dbData