Node.js nodejs Async.each嵌套循环混淆
我想要两个嵌套的for循环Node.js nodejs Async.each嵌套循环混淆,node.js,nested-loops,async.js,Node.js,Nested Loops,Async.js,我想要两个嵌套的for循环 async.each(ListA, function(itemA,callback1){ //process itemA async.each(itemA.Children, function(itemAChild,callback1){ //process itemAChild callback1(); }), funct
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消息,具体取决于循环大小
Im在两个循环中处理数据,所以当控件打印“final process”消息时,我希望在此之前将所有数据填充到一个对象,并将其作为响应发送,这在这里是无法实现的
我想我不清楚异步工作的概念。每个..有人能帮我实现所需的输出吗它是异步的。异步函数立即返回,而不等待处理任何内容。这就是为什么先打印“过程完成”的原因。这就是回电和承诺的全部意义。进程结束时会调用它们,这样,当发生这种情况时,您就可以插入代码来执行所需操作。@slebetman那么我如何解决我的问题呢。。。单回路使用asyn在串行模式下工作良好。。。但对于嵌套循环,它并没有像我所希望的那样工作……首先,我认为您有一个输入错误。您有两个名为
callback1
的变量,没有一个名为callback
的变量。此外,我认为您的大括号不匹配。您似乎缺少一些右大括号。它是异步的。异步函数立即返回,而不等待处理任何内容。这就是为什么先打印“过程完成”的原因。这就是回电和承诺的全部意义。进程结束时会调用它们,这样,当发生这种情况时,您就可以插入代码来执行所需操作。@slebetman那么我如何解决我的问题呢。。。单回路使用asyn在串行模式下工作良好。。。但对于嵌套循环,它并没有像我所希望的那样工作……首先,我认为您有一个输入错误。您有两个名为callback1
的变量,没有一个名为callback
的变量。此外,我认为您的大括号不匹配。你好像少了一些收尾括号。非常感谢。。我用和你一样的方法得到了答案。。有点晚了。再次感谢@mustafaThanks。非常感谢。。我用和你一样的方法得到了答案。。有点晚了…再次感谢@mustafa
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');
});