我試圖在呈現Jade模板之前進行多個MongoDB查詢,但我無法完全弄清楚如何等待所有Mongo查詢在呈現模板之前完成。Node.js - 等待多個異步調用
exports.init = function(req, res){
var NYLakes = {};
var NJLakes = {};
var filterNY = {"State" : "NY"};
db.collection('lakes').find(filterNY).toArray(function(err, result) {
if (err) throw err;
NYLakes = result;
});
var filterNJ = {"State" : "NJ"};
db.collection('lakes').find(filterNJ).toArray(function(err, result) {
if (err) throw err;
NJLakes = result;
});
res.render('explore/index',
{
NYlakes: NYLakes,
NJlakes: NJLakes
}
);
};
很乾淨。尼斯。 –
這將有一個競爭條件。如果兩個異步操作直到它們調用complete()之前執行完畢,那麼它們都可以用必要的條件調用它,以執行complete()中的if語句的主體。不太可能,但可能。 – 2017-06-06 16:30:03
@ ghert85在多線程環境中,你會是對的,但node.js是單線程的。所以直到它返回到事件循環之後,代碼才能被中斷,並且這種競爭條件不會發生。 –