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 문의 본문을 실행하는 데 필요한 조건으로 호출 할 수 있습니다. 있을 법하지는 않지만 가능합니다. –
@ ghert85 다중 스레드 환경에서는 올바르게 작동하지만 node.js는 단일 스레드입니다. 따라서 이벤트 루프로 돌아가고이 경쟁 조건이 발생할 때까지 코드를 인터럽트 할 수 없습니다. –