цепочка вложенных обещаний в цикле

Я новичок в обещаниях и застрял в следующем упражнении.

У меня есть массив значений, и я хочу выполнить асинхронный вызов для каждого из них. В обратном вызове я хочу выполнить еще один вызов по результатам первого вызова.

По сути, мое разочарование заключается в следующем: порядок выполнения должен быть «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));
}

Возможно, есть простое решение, но я застрял на нем.

Ответы на вопрос(1)

Ваш ответ на вопрос