নীচের প্রতিশ্রুতি কলটি এবং চেইনড লগার.লগ (পুনরায়) পুনরুক্তির মাধ্যমে সুসংগতভাবে চলমান রয়েছে তা নিশ্চিত করতে সঠিকভাবে একটি লুপ কীভাবে তৈরি করবেন ? (Bluebird)
db.getUser(email).then(function(res) { logger.log(res); }); // this is a promise
আমি নিম্নলিখিত উপায়ে চেষ্টা করেছি ( http://blog.victorquinn.com/javascript-promise- moment-loop থেকে পদ্ধতি )
var Promise = require('bluebird');
var promiseWhile = function(condition, action) {
var resolver = Promise.defer();
var loop = function() {
if (!condition()) return resolver.resolve();
return Promise.cast(action())
.then(loop)
.catch(resolver.reject);
};
process.nextTick(loop);
return resolver.promise;
});
var count = 0;
promiseWhile(function() {
return count < 10;
}, function() {
return new Promise(function(resolve, reject) {
db.getUser(email)
.then(function(res) {
logger.log(res);
count++;
resolve();
});
});
}).then(function() {
console.log('all done');
});
যদিও এটি কাজ করে বলে মনে হচ্ছে, তবে আমি মনে করি না এটি লগার.লগ (পুনরায়) কল করার আদেশের নিশ্চয়তা দেয় ;
কোনও পরামর্শ?
while
কোডটি কীভাবে এইভাবে কাজ করে?
loop
ফাংশনটির সাথে পুনরাবৃত্তি সিঙ্ক্রোনাস লুপগুলি করার উপায়)। গ্যারান্টি নেই বলে আপনি কেন ভাবেন?