Я пытаюсь сделать несколько запросов MongoDB до того, как я отрисую шаблон Jade, но я не могу понять, как подождать, пока все запросы 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(), они могут оба вызвать его с необходимым условием для выполнения тела оператора if в complete(). Вряд ли, но возможно. –
@ ghert85 В многопоточной среде вы были бы правы, но node.js однопоточно. Таким образом, код не может быть прерван до тех пор, пока он не вернется в цикл событий, и это условие гонки не может произойти. –