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"); });