La siguiente cadena debe ejecutarse secuencialmente.
$.when() .pipe(functionA) .pipe(functionB) .fail(functionC); donde functionA devuelve una Promesa.
function functionA() { return networkCall().then(sideEffectsForSuccess).catch(sideEffectsForFailure); } function networkCall() { return new Promise(function (resolve, reject) { return $.ajax(...); }); } Sin embargo, esto no parece funcionar, ya que functionB B se ejecuta inmediatamente sin esperar a que la Promesa devuelta por la función A se resuelva (o falle). La cadena funciona correctamente si functionA A se cambia a
function functionA() { return $.ajax(...).pipe(sideEffectsForSuccess, sideEffectsForFailure); } Desafortunadamente, tengo que usar networkCall . ¿Alguna idea de cómo hacer que esto funcione?
¿Puedes devolver la promesa?
function functionA() { let callPromise = networkCall(); callPromise.then(sideEffectsForSuccess).catch(sideEffectsForFailure); return callPromise; }