цепочка вложенных обещаний в цикле
Я новичок в обещаниях и застрял в следующем упражнении.
У меня есть массив значений, и я хочу выполнить асинхронный вызов для каждого из них. В обратном вызове я хочу выполнить еще один вызов по результатам первого вызова.
По сути, мое разочарование заключается в следующем: порядок выполнения должен быть «1x2x3x», но порядок «123xxx»
Другими словами, цикл уже переходит к следующей итерации, когда вложенное обещание первого обещания еще не выполнено.
var values = ["1", "2", "3"];
function do(val) {
var deferred = Q.defer();
asyncCall(val)
.then( function( response ) {
console.log(val);
asyncCall(response)
.then( function ( response ) {
console.log('x');
deferred.resolve(true)
});
});
return deferred.promise;
}
var result = do(values[0]);
values.forEach( function(f) {
result = result.then(do(f));
}
Возможно, есть простое решение, но я застрял на нем.