Каким будет идиоматический способ сделать что-то вроде цикла while с promises. Итак:
сделать что-нибудь если условие все еще стоит, сделайте это снова повторение затем сделайте что-нибудь еще.
dosomething.then(possilblydomoresomethings).then(finish)
Я сделал это таким образом, мне было интересно, есть ли какие-нибудь лучшие/более идоматические способы?
var q = require('q');
var index = 1;
var useless = function(){
var currentIndex = index;
console.log(currentIndex)
var deferred = q.defer();
setTimeout(function(){
if(currentIndex > 10)
deferred.resolve(false);
else deferred.resolve(true);
},500);
return deferred.promise;
}
var control = function(cont){
var deferred = q.defer();
if(cont){
index = index + 1;
useless().then(control).then(function(){
deferred.resolve();
});
}
else deferred.resolve();
return deferred.promise;
}
var chain = useless().then(control).then(function(){console.log('done')});
Вывод: 1 2 3 4 5 6 7 8 9 10 11 сделано