2016-12-07 1 views
3

Je crée Jquery Promise. Sa structure est suivante:Échec de la demande interne à cause de l'échec de la demande parente

request1() 
    .then(response => {}) 
    .then(() => { 
     request2().done(response => {}) 
    } 
    .fail(err => {}); 

Dans done et fail bloc que je fais "débloquer" de l'écran. Mais parfois je ne peux pas obtenir le code "débloquer".

Cela signifie-t-il que quelque chose de mauvais se produit dans request2 et que ce problème n'est pas résolu dans fail de la requête parente?

Répondre

1

Oui, parce que vous devez retourner la promesse dans la seconde alors:

.then(() => { 
    return request2().done(response => {}) 
} 

Sinon, si vous n'utilisez pas un bloc, le retour se fait automatiquement dans ES6 lambda.

.then(() => request2().done(response => {})) 
+0

Salut! Merci, semble être une solution logique. – demo

0

Votre fail et ne sont pas done callbacks sur la même promesse. request1() et request2() créer le leur.

var deferred = request1(); 

deferred.then(response => {}) 
     .then(() => { 
      request2().done(deferred.resolve) 
        .fail(deferred.reject) 
     }) 
     .done(response => {}) 
     .fail(err => {});