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はシングルスレッドです。したがって、イベントループに戻り、この競合状態が発生するまで、コードを中断することはできません。 –