javascript函数中嵌套的async.map
我在使用图书馆时面临一个问题。我有一种情况,我使用asyc.auto和一个使用async.map的函数。现在在回调中我得到一个结果数组,在下一个函数中,我需要调用db update/insert query。我可以在另一个async.map中使用async.map吗 为了让事情更清楚,请看以下内容:javascript函数中嵌套的async.map,javascript,node.js,mongodb,asynchronous,express,Javascript,Node.js,Mongodb,Asynchronous,Express,我在使用图书馆时面临一个问题。我有一种情况,我使用asyc.auto和一个使用async.map的函数。现在在回调中我得到一个结果数组,在下一个函数中,我需要调用db update/insert query。我可以在另一个async.map中使用async.map吗 为了让事情更清楚,请看以下内容: async.auto({ // other functions D: ['A', function(callback, results){ var resultIds
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);
});
有没有更好的方法来处理这种情况?我正在使用这些ID更新/插入新文档。为什么不在后端创建所有文档?从前端进行一次呼叫,在后端获取id并更新/插入数据只要正确调用回调,就可以嵌套任意多个级别。在
E
中的两个async.map
回调中,你在做什么?@biancamihai:这只是整个后端的东西…@dark\u shadow,您不必为每个async.map使用不同的参数,也不必对它们进行不同的命名。如果调用cb,外部和内部回调的命名方式(cb)都会起作用,因为JS作用域将确定它是哪一个。我的意思是当您在其中时调用async.map()回调。我见过调用外部回调(如E的回调)而不是async.map()的回调的代码。我个人的偏好是,我给它们取不同的名字只是为了帮助我和其他人阅读我的代码。我将外部映射命名为mapCb,下一级的async.map()命名为mapCb1。