【问题标题】:nodejs Async.each Nested loop Confusionnodejs Async.each 嵌套循环混淆
【发布时间】:2018-02-02 09:50:51
【问题描述】:

我想要两个嵌套的 for 循环

async.each(ListA,
function(itemA,callback1){
        //process itemA
        async.each(itemA.Children,
        function(itemAChild,callback1){
              //process itemAChild  
              callback1();
               }),
    function(err){
    console.log("InnerLoopFinished")
    }   

callback();
}),function(err){
console.log("OuterLoopFinished")
}
console.log("Process Finished")

现在我期待一个像这样的输出 { 内环完成 外环完成 } 根据列表大小和

过程完成

我得到的是 首先完成的过程 和 InnerLoop 和 Outerloop 消息取决于循环大小..

我在两个循环中处理数据,所以当控制打印“最终处理”消息时,我希望我的所有数据都填充到一个对象中,然后将其作为此处未实现的响应发送

我认为我不清楚工作 async.each.. 的想法。有人可以帮助我实现所需的输出

【问题讨论】:

  • 它是异步的。异步函数立即返回,无需等待处理任何内容。这就是首先打印“Process Finished”的原因。这就是回调和承诺的全部意义所在。当过程完成时它们会被调用,以便您可以插入代码以在发生这种情况时执行您想要的操作。
  • @slebetman 那么我该如何解决我的问题? ...单循环在串行模式下使用 asyn.each 可以正常工作...但是对于嵌套循环,它不像我想要的那样工作 ....
  • 首先,我认为你有一个错字。您有两个名为 callback1 的变量,没有一个名为 callback
  • 另外,我认为你的牙套不匹配。您似乎缺少一些右括号。

标签: node.js nested-loops async.js


【解决方案1】:
async.each(ListA, function (itemA, callback) { //loop through array
    //process itemA
  async.each(itemA.Children, function (itemAChild, callback1) { //loop through array
    //process itemAChild
    callback1(); 
    }, function(err) {
      console.log("InnerLoopFinished");
      callback();
    });
  }, function(err) {
    console.log("OuterLoopFinished");
    console.log('Process Finished');
});

【讨论】:

  • 非常感谢 .. 很高兴发布我通过与您相同的方法得到解决方案的帖子.. 有点晚了..bt 再次感谢@mustafa
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多