วิธีสร้างลูปอย่างถูกต้องเพื่อให้แน่ใจว่าการเรียกคำสัญญาต่อไปนี้และlogger.log (res) ที่ถูกล่ามโซ่ทำงานพร้อมกันผ่านการวนซ้ำ? (คราม)
db.getUser(email).then(function(res) { logger.log(res); }); // this is a promise
ฉันลองทำตามวิธีต่อไปนี้ (วิธีจากhttp://blog.victorquinn.com/javascript-promise- while-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');
}); 
แม้ว่าจะดูเหมือนใช้งานได้ แต่ฉันไม่คิดว่ามันรับประกันลำดับการเรียกlogger.log (res);
ข้อเสนอแนะใด ๆ ?
whileทำงานของรหัสนั้น?
                
loopฟังก์ชันเป็นวิธีการทำลูปแบบซิงโครนัส) ทำไมคุณถึงคิดว่าไม่มีการรับประกัน?