2017-12-18 1 views
1

Wenn ich meine Versprechen Kette wie folgt,Nur eine Fehlermeldung von einer fehlgeschlagenen Versprechen Chain in Ajax

var promise1 = step1(), 
    promise2 = promise1.then(function(data) { 
       return step2(); 
       }), 
    promise3 = promise2.then(function(data) { 
       return step3(); 
       }); 

Ich habe auch separat Fehlermeldungen für jeden Schritt. Die GUI sollte Fehlermeldungen angezeigt werden, wenn ein Fehler passiert,

promise1.fail(function(data) { 
     alert('A system error occurred and your action could not be completed. Please try again. Data: ' + data); 
    }); 
    promise2.fail(function(data) { 
     alert('A system error occurred and your action could not be completed. Please try again. Data: ' + data); 
    });   
    promise3.fail(function(data) { 
     alert('A system error occurred and your action could not be completed. Please try again. Data: ' + data); 
    });  

Ich will nicht mehrere Fehlermeldungen verbreiten, wenn etwas in Promise3 passiert. Die GUI sollte nur einen Fehler von der gesamten Kette anzeigen. Ist das möglich?

+1

Uh, haben Sie keine separaten Fail-Nachrichten bei jeder Zusage? 'promise3' wird sowieso abgelehnt, wenn irgendwo in der Kette ein Fehler auftritt, also benutze das einfach. – Bergi

Antwort

1

Sie müssen die Kette mit Zwischenzuweisungen nicht unterbrechen.

schreiben es als eine einzige semantische Kette,

var promise = step1() 
.then(function(data1) { 
    return step2(); 
}) 
.then(function(data2) { 
    return step3(); 
}) 
.fail(function(jqXHR, textStatus, errorThrown) { 
    alert('A system error occurred and your action could not be completed. Please try again. error: ' + textStatus); 
}); 

ist ein Fehler in step1(), step2() oder step3() den Rest des Erfolgspfad führen werden übersprungen und wird an die Prozedur nicht am Ende versickern nach unten.

Das scheint, was Sie wollen.

Verwandte Themen