我有两个来自数据库的数组,这是一个样本 我尝试在foreach中做一些事情,但答案不是我预期的。
为什么conso.log打印序列不是
输出循环0
在循环0中 在循环1中 在循环2中 在循环3中 在循环4中 out loop 1
在循环0中 在循环1中 在循环2中 在循环3中 在循环4中 。 。
[我的代码]
modules.dbCmder.query(DefaultDB, DefaultDB, strSQL, [], function (data) {
data.forEach(function (value, index, array) {
console.log('out loop ' + index);
modules.dbCmder.query(DefaultDB, DefaultDB, strSQL2, [], function (res) {
data.forEach(function (value, index, array) {
console.log('in loop ' + index);
});
});
});
});
[代码结果]
out loop 0
out loop 1
out loop 2
out loop 3
out loop 4
in loop 0
in loop 1
in loop 2
in loop 3
in loop 4
in loop 0
in loop 1
in loop 2
in loop 3
in loop 4
in loop 0
in loop 1
in loop 2
in loop 3
in loop 4
答案 0 :(得分:0)
基本上,Javascript将docker exec -it trackware-web bash
函数调用放在事件堆栈上,然后在当前modules.dbCmder.query
中继续。因此,外部forEach()
会一直运行直到完成,而对forEach()
的4次调用会堆叠起来,然后依次解决。这就是“为什么”这种情况发生的答案。
您的解决方案是运行控制流库,例如async,以确保在下一个外部query
之前解析query
。
像
这样的东西forEach