Согласно онлайн-документации обещаний Bluebird, "каждый метод" ( LINK ) останавливает итерацию, если одно обещание отклонено. Есть ли способ заставить его продолжить и завершить все итерации? Если нет, что я должен использовать вместо этого? Я ищу способ:
- повторять последовательно по массиву (то есть: дождаться завершения предыдущего обещания, прежде чем продолжить следующую итерацию)
- всегда продолжать итерацию, даже если некоторые случаются отклонения обещаний
- возможность вложения более одного l oop
Я до сих пор работал с этим кодом, но считаю его довольно громоздким и хотел бы перейти на более легкий / родной кусок кода.
var promiseFor = Promise.method(function(condition, action, value) {
if (!condition(value)) return value;
return action(value).then(promiseFor.bind(null, condition, action));
});
return promiseFor(function(count){
return count < someArray.length;
}, function(count){
//foo...
return ++count;
}, 0)