javascript - Mongoose find() 使用锁存器在 for 循环内调用

标签 javascript node.js mongodb express

我已经研究这个问题几个小时了,但似乎找不到答案。 问题是我在 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/

相关文章:

mongodb - 查找 MongoDB 中最常出现的值的最佳方法是什么?

node.js - 如何回滚一天?

javascript - 在 Typescript 中将数据添加到请求

javascript - 通过 Javascript 访问 Twitter

javascript - 如何使用元标记放宽内容安全策略

javascript - 在 jQuery 中 trim 部分链接

javascript - 如何用 Ember Data 表示模型树?

javascript - Meteor index.js 是隐含的,怎么样?

mysql - 使用 Sequelize 仅从行和关联中获取值

node.js - Mongoose.js - 人口和其他领域?