Siehe async.whilst
. Sie wollen Flusskontrolle des for
Schleife, für die dies einen Rückruf zur Steuerung jeder Schleifeniteration bereitstellt.
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);
}
)
Entweder das oder verwenden Sie Promise.all()
auf gesammelte Versprechen, "ein großes Ergebnis" zurückzugeben. Aber Sie müssten auch zu promised-mongo
wechseln
von mongojs
, als das nächste Äquivalent, da es mehr mongodb-Treiber gibt, die Versprechungen tatsächlich unterstützen. Das ist nur der direkte Fork von 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("");
})
Nicht genau dasselbe, da es sich um eine Listenausgabe handelt und nicht um drei, aber der Punkt ist, dass Promise
Objekte verzögern, bis sie tatsächlich zur Auflösung aufgerufen werden, sodass Sie die Parameter in der Schleife füttern, aber später ausführen können.