【发布时间】:2017-10-22 19:38:22
【问题描述】:
经过一些在线研究,Javascirpt 的 forEach 循环似乎被阻塞,但我的以下代码证明并非如此:
我正在使用 node js mongoDB 驱动程序从我的集合中获取文档,该集合是一个数组(命名文档)
collectionInstance.find({}, function(err, documents) {
if (err || !documents) {
console.log('no documents found in the collection');
} else {
console.log('before');
documents.forEach(function(document) {
console.log('inside')
});
console.log('outside');
}
});
我想要什么:
before -> inside, inside, inside .... inside -> outside
它给了我什么:
before -> outside -> inside, inside, inside .... inside
为什么循环表现得好像它是非阻塞的?
【问题讨论】:
-
documents只是一个普通的 javascript 数组吗?还是更具异国情调? -
见这个:stackoverflow.com/a/11661778/1623249。
documents实际上可能是cursor,而不是数组 -
如果这实际上是本机驱动程序而不是猫鼬,那么您将通过
.find().toArray(err,documents)获得预期的行为。在.toArray()返回一个常规数组后,你就有了一个纯 JavaScript.forEach()
标签: javascript node.js mongodb foreach