देखें async.whilst
. आप for
. का प्रवाह नियंत्रण चाहते हैं लूप, जिसके लिए यह प्रत्येक लूप पुनरावृत्ति को नियंत्रित करने के लिए कॉलबैक प्रदान करता है।
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);
}
)
या तो वह या Promise.all()
एकत्रित वादों पर "एक बड़ा परिणाम" वापस करने के लिए। लेकिन आपको promised-mongo
पर भी स्विच करना होगा
mongojs
. से , निकटतम समकक्ष के रूप में, क्योंकि अधिक मोंगोडब ड्राइवर हैं जो वास्तव में वादों का समर्थन करते हैं। वह 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("");
})
बिल्कुल वही बात नहीं है, क्योंकि यह एक सूची आउटपुट है और तीन नहीं, लेकिन मुद्दा यह है कि Promise
ऑब्जेक्ट तब तक स्थगित रहते हैं जब तक कि वास्तव में हल करने के लिए कॉल नहीं किया जाता है, ताकि आप पैरामीटर्स को लूप में फीड कर सकें, लेकिन बाद में निष्पादित कर सकें।