Zie async.whilst
. U wilt stroombeheer van de for
lus, waarvoor dit een callback biedt om elke lus-iteratie te besturen.
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);
}
)
Ofwel dat of gebruik Promise.all()
op verzamelde beloften om "één groot resultaat" terug te geven. Maar u moet ook overschakelen naar promised-mongo
van mongojs
, als het dichtstbijzijnde equivalent, omdat er meer mongodb-stuurprogramma's zijn die beloften daadwerkelijk ondersteunen. Dat is gewoon de directe vork van 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("");
})
Niet precies hetzelfde, aangezien het één lijstuitvoer is en niet drie, maar het punt is dat de Promise
objecten stellen uit totdat ze daadwerkelijk worden aangeroepen om op te lossen, zodat u de parameters in de lus kunt invoeren, maar later kunt uitvoeren.