2016-08-05 2 views
-2

Ich habe eine $.when jquery Anweisung, die auf 3 Ajax-Anfragen wartet, bevor es seine nächste Reihe von Funktionen ausführt. Die Schwierigkeit, die ich habe, ist, wenn eine dieser Anfragen einen Fehler 500 zurückgibt, dann wird das System nicht zu der nächsten Gruppe von Funktionen verarbeitet und das System wird an diesem Punkt eingefroren.jQuery mehrere Deferreds - wie den Rest zu verarbeiten, wenn man abgelehnt wird

Gibt es eine Möglichkeit, den Ajax-Aufruf zu bekommen, um den 500-Fehler zu überschreiten, wenn in einer $ .when-Anweisung.

Alle Ajax-Funktionen sind außerhalb der $ .when als separate Funktionen definiert und alle von ihnen haben eine Erfolgs- und Fehlerbehandlung Funktionen innerhalb.

Hier ist ein Blick auf den Code:

$.when(
    ajaxCall1(), 
    ajaxCall2(), 
    ajaxCall3() 
).done(function(){ 
    // functions that follow 
}); 

so, wenn eine der Ajax-Aufrufe scheitern dann das getan Prozess nicht abgeschlossen ist. Ich dachte, selbst wenn der Ajax-Aufruf fehlschlagen sollte, würde es immer noch die Fehlerbehandlung zurückgeben.

Der Fehler 500, der empfangen wird, wird aufgrund eines Berechtigungsblocks von der API erzwungen.

+0

Wenn Sie einen Fail-Callback hinzufügen, wird der Callback ausgeführt, die anderen Defereds werden jedoch nicht ausgeführt. Siehe den letzten Abschnitt von [jQuery when] (https://api.jquery.com/jquery.when/). Tut mir leid, darauf kann ich nur hinweisen. – springrolls

Antwort

0

done wird nur aufgerufen, wenn die Funktionen in when keine Fehler zurückgeben. Vielleicht könnten Sie then anstelle von done verwenden und die gleiche Funktion für beide doneFilter und failFilter auslösen.

+0

Vielen Dank, ich kann nicht glauben, dass ich etwas so Einfaches in den Docs verpasst habe. – ThePagan

Verwandte Themen