我有2个嵌套的async.each。他们看起来像:
async.each(result, function(row, callbackrow) {
tot = 0;
console.log('UID:', row.uid);
async.each(row.vbs, function(vb, callback){
checkInteractions(row.uid, vb.vbNID, function(data){
console.log(data);
callback();
});
}, function(err){ console.log('done 1'); });
callbackrow();
}, function(err){ console.log("done all"); });
我的问题是,checkinteraction
异步调用会导致问题。没有它,每个第一个异步中的每一个都会从第二个调用控制台日志。有了它,我得到了完成所有消息,并且在嵌套(第二)异步之后每个都执行它的代码。我需要它像一个for for的同步调用。对于first for的每个元素,第二个要在步进到第一个for中的下一个索引之前执行。
答案 0 :(得分:1)
我认为callbackrow
应该作为内部循环的最终回调传递,以便外部循环知道何时进入下一次迭代,如下所示:
async.each(result, function(row, callbackrow) {
tot = 0;
console.log('UID:', row.uid);
async.each(row.vbs, function(vb, callback){
checkInteractions(row.uid, vb.vbNID, function(data){
console.log(data);
callback();
});
}, function(err){
console.log('done 1');
callbackrow();
});
}, function(err){ console.log("done all"); });