我有一个函数在数组上调用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任务已通过相同的函数调用。
答案 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
})