0
經過一些調查網上,好像Javascirpt的forEach循環阻塞,但我下面的代碼,否則證明:問題的JavaScript的foreach異步行爲
我使用節點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數組?還是更奇特的東西? –
請參閱:https://stackoverflow.com/a/11661778/1623249。 '文件'實際上可能是一個'cursor',而不是一個數組 –
如果這實際上是本地驅動程序,並且不是貓鼬,那麼通過'.find().toArray(err,documents)'得到您期望的行爲。在'.toArray()'返回一個常規數組之後,你有一個普通的JavaScript'.forEach()' –