node.js应用程序中的async.js问题

async.js issues in node js application

本文关键字:js async 问题 应用程序 node      更新时间:2023-09-26

我有两个嵌套的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消息,在嵌套的(第二个)async之后,每个异步执行它的代码。我需要它像一个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"); });