Voir async.whilst
. Vous voulez le contrôle de flux du for
boucle, pour laquelle cela fournit un rappel pour contrôler chaque itération de boucle.
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);
}
)
Soit cela, soit utilisez Promise.all()
sur les promesses collectées de retourner "un grand résultat". Mais vous devrez également passer à promised-mongo
de mongojs
, comme l'équivalent le plus proche, car il existe davantage de pilotes mongodb qui prennent en charge les promesses. Celui-là est juste le fork direct 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("");
})
Ce n'est pas exactement la même chose, puisqu'il s'agit d'une sortie de liste et non de trois, mais le fait est que la Promise
les objets diffèrent jusqu'à ce qu'ils soient réellement appelés à résoudre, vous pouvez donc alimenter les paramètres dans la boucle, mais exécuter plus tard.