async.whilst
を参照してください
。 for
のフロー制御が必要です ループ。これにより、各ループの反復を制御するためのコールバックが提供されます。
var temphtml = "",
j = 0;
async.whilst(
function() { return j < 3 },
function(callback) {
db.austinsroom.find({"y": j }, {}).sort({"x": 1}, function(err, records)
temphtml += records.map(function(el) {
return el.display;
}).join("") + '<br>';
j++;
callback(err);
});
},
function(err) {
if (err) throw err;
console.log(temphtml);
}
)
それか、 Promise.all()
収集された約束については、「1つの大きな結果」を返します。ただし、 promised-mongo
に切り替える必要もあります。
mongojs
から 、最も近い同等物として、実際にpromiseをサポートするmongodbドライバーが多いため。これは、mongojs
からの直接フォークです。 :
var temphtml = "",
j = 0,
promises = [];
for ( var j=0; j < 3; j++ ) {
promises.push(db.austinsroom.find({"y": j }, {}).sort({"x": 1}).toArray());
promises.push('<br>'); // this will just join in the output
)
Promise.all(promises).then(function(records) {
temphtml += records.map(function(el) {
return el.display;
}).join("");
})
これは3つではなく1つのリスト出力であるため、まったく同じではありませんが、要点はPromise
オブジェクトは、実際に解決のために呼び出されるまで延期されるため、ループ内のパラメーターをフィードできますが、後で実行できます。