async.js 节点 js 应用程序中的问题
async.js issues in node js application
我有 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
异步调用导致了问题。没有它,每个第一个异步的每个控制台日志都会从第二个开始调用。有了它,我得到了 done all 消息,并且在嵌套(第二个)异步之后每个执行它的代码。我需要它像 for 内部的同步调用一样。对于第一个 for 的每个元素,在进入第一个 for 的下一个索引之前要执行的第二个元素。
我认为 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"); });
我有 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
异步调用导致了问题。没有它,每个第一个异步的每个控制台日志都会从第二个开始调用。有了它,我得到了 done all 消息,并且在嵌套(第二个)异步之后每个执行它的代码。我需要它像 for 内部的同步调用一样。对于第一个 for 的每个元素,在进入第一个 for 的下一个索引之前要执行的第二个元素。
我认为 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"); });