Consulte
async.whilst
. Você quer o controle de fluxo do for
loop, para o qual this fornece um retorno de chamada para controlar cada iteração de loop. 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);
}
)
Ou isso ou use
Promise.all()
em promessas coletadas para retornar "um grande resultado". Mas você também precisaria mudar para promised-mongo
de mongojs
, como o equivalente mais próximo, já que existem mais drivers mongodb que realmente suportam promessas. Esse é apenas o fork direto de 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("");
})
Não é exatamente a mesma coisa, já que é uma saída de lista e não três, mas o ponto é que a
Promise
objetos adiam até serem realmente chamados para resolver, então você pode alimentar os parâmetros no loop, mas executar mais tarde.