Xem async.whilst
. Bạn muốn kiểm soát luồng của for
vòng lặp, mà điều này cung cấp một lệnh gọi lại để kiểm soát mỗi lần lặp lại vòng lặp.
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);
}
)
Hoặc sử dụng Promise.all()
trên những lời hứa đã thu thập sẽ trả về "một kết quả lớn". Nhưng bạn cũng cần chuyển sang promised-mongo
từ mongojs
, như là tương đương gần nhất, vì có nhiều trình điều khiển mongodb hơn thực sự hỗ trợ các hứa hẹn. Cái đó chỉ là nhánh rẽ trực tiếp từ 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("");
})
Không hoàn toàn giống nhau, vì nó là một đầu ra danh sách chứ không phải ba, nhưng điểm mấu chốt là Promise
các đối tượng trì hoãn cho đến khi thực sự được gọi để giải quyết, vì vậy bạn có thể cung cấp các tham số trong vòng lặp, nhưng thực thi sau.