Javascript Mongoose find()使用闩锁在for循环内部调用

Javascript Mongoose find()使用闩锁在for循环内部调用,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我已经讨论了几个小时,似乎找不到答案。 问题是我在for循环中调用了mongoDB。我正在使用闩锁,因此等待在再次前进之前等待呼叫结束。这是我的密码: var latch = true; for (var i=0; i<array.length; i++) { while(latch == false){} Table1.find({}, function(err, result){ ... some code ... latch = tru

我已经讨论了几个小时,似乎找不到答案。 问题是我在for循环中调用了mongoDB。我正在使用闩锁,因此等待在再次前进之前等待呼叫结束。这是我的密码:

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循环,因为您已经创建了一个无限循环

有几种方法可以处理节点中循环内的异步代码,包括函数外的计数器变量和尾部递归。您可以在这里看到一些示例:


我非常喜欢它,它提供了一个async.each,它将迭代器并行应用于每个元素。这很可能符合您的目的。

谢谢您的提示,它真的很有帮助,我终于能够解决这个问题:解决方案是使用异步项目中的每一个。