Tôi đang cố gắng thực hiện nhiều truy vấn MongoDB trước khi tôi tạo mẫu Jade, nhưng tôi không thể tìm ra cách đợi cho đến khi tất cả Truy vấn Mongo hoàn tất trước khi hiển thị mẫu .Node.js - chờ cho nhiều cuộc gọi không đồng bộ
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
}
);
};
Rất sạch sẽ. Tốt đẹp. –
Điều này sẽ có một điều kiện chủng tộc. Nếu cả hai hoạt động async thực thi cho đến khi chúng được gọi là complete(), thì cả hai có thể gọi nó với điều kiện cần thiết để thực hiện phần thân của câu lệnh if(). Không thể, nhưng có thể. –
@ ghert85 Trong môi trường đa luồng bạn muốn, nhưng node.js là chuỗi đơn. Vì vậy, mã không thể bị gián đoạn cho đến khi nó trở về vòng lặp sự kiện và điều kiện chủng tộc này không thể xảy ra. –