我已经研究这个问题几个小时了,但似乎找不到答案。 问题是我在 for 循环内调用了 mongoDB。我正在使用闩锁,因此 for 会等待调用结束,然后再继续前进。这是我的代码:
var latch = true;
for (var i=0; i<array.length; i++) {
while(latch == false){}
Table1.find({}, function(err, result){
... some code ...
latch = true;
});
latch = false;
}
问题是它甚至不运行来自 Table1.find() 的回调,它只是暂时被阻塞。 谁能帮我解决这个问题吗?
最佳答案
for 循环永远不会越过 while 循环(因为您创建了一个无限循环)。
有多种方法可以处理 Node 循环内的异步代码,包括函数外部的计数器变量和尾递归。您可以在这里查看一些示例: http://metaduck.com/01-asynchronous-iteration-patterns.html
我是https://github.com/caolan/async的忠实粉丝它提供了一个 async.each ,它并行地将迭代器应用于每个元素。这可能适合您的目的。
关于javascript - Mongoose find() 使用锁存器在 for 循环内调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31304629/