我在使用https://github.com/caolan/async库时遇到一个问题。我有一种情况,我使用asyc.auto和一个使用async.map的函数。现在在回调中我得到一个结果数组,在下一个函数中,我需要调用db update / insert查询。我可以在另一个async.map中使用async.map。
为清楚起见,请看一下:
async.auto({
// other functions
D: ['A', function(callback, results){
var resultIds = results.A;
async.map(resultIds, function(data, cb){
// do some stuff
}, function(err, result){
console.log(err);
if(err) {
callback(err);
}
callback(null, result);
});
}],
E: ['D', function(callback, results){
var resultIds = results.D; // an array of result which contains ids: [1,2,4]
async.map(resultIds, function(data, cb){
// Can I use again a async.map here like this
async.map(data[ids], function(d,cb){
// do some stuff here
}, function(err, result){});
}, function(err, result){
console.log(err);
if(err) {
callback(err);
}
callback(null, result);
});
}]
}, function(err, results){
console.log(results);
if(err) {
cb(err);
}
cb(null, results);
});
有没有更好的方法来处理这种情况?我用mongo来更新/插入带有这些ID的新文档。