Чтобы избежать ада обратного вызова, я объединяю несколько инструкций (Bluebird Promise), каждая из которых работает асинхронно для l oop. Вместо того, чтобы ждать каждого от l oop до fini sh, цепочка устремляется прямо к концу, где она показывает «DONE», пока циклы for все еще работают. Как я могу изменить свои циклы for так, чтобы цепочка обещаний "ждала" каждого из них до конца sh, прежде чем выполнить следующий раздел "then"?
return Object1.Asyncmethod1(param1)
.then(function(result1) {
var promiseFor = Promise.method(function(condition, action, value) {
if (!condition(value)) return value;
return action(value).then(promiseFor.bind(null, condition, action));
});
promiseFor(function(count) {
return count < result1.length;
}, function(count) {
return Object.someOtherAsyncAction(someParam)
.then(function(res) {
return ++count;
});
}, 0)
}).then(function(result2) {
//another for loop just like the one above
}).then(function(result3) {
console.log("DONE");
res.json({
result: result3
});
}).catch(function(err) {
res.json({
result: 'error:' + err
});
});