Ich habe ein $.ajax
Versprechen und möchte überprüfen, ob meine (syntaktisch gültige) Antwort einen Fehler enthält, der in diesem Fall den abgelehnten Status auslöst.Einen Fehler in das verzögerte Objekt von jQuery werfen
Ich habe mit meiner eigenen Versprechens-Bibliothek gearbeitet, die solche Aufgaben leicht erledigt. Ich mag jQuerys Promise (cache) Implementierung mit seinem Deferred
object nicht wirklich und kann etwas übersehen haben, weil ich es selten benutze. Ich denke, der Weg zu gehen ist nur .then()
verwenden, das ziemlich kompliziert zu sein scheint:
return $.ajax(...).then(function success(response) {
var problem = hasError(response);
if (problem) {
var error = new $.Deferred;
error.reject(problem);
return error;
} else
return response;
});
Dies sollte ein Versprechen zurück, die im Fall von Netzwerkfehlern oder Problemen mit der Antwort abgelehnt wird. Aber ist die Zurückweisung eines zurückgewiesenen wirklich der [einzige | beste | kürzeste] Weg zu gehen?
Ich würde auch Hilfe, wie man mit solchen "Fehler werfen Antwort-Handler" in den Ajax-Optionen selbst behandelt, konnte ich keine gute Dokumentation über sie finden.
Haftungsausschluss: Nein, ich kann nicht die Serverantworten ändern. Das Problem erkennende Verfahren ist synchron. Ich möchte keine anderen Bibliotheken verwenden, ich bin besonders daran interessiert, wie jQuery das löst.
OK, mit '.then()' ich das Ding bedeutete, dass '.pipe()' tut in jQuery :-( – Bergi
ab Jquery 1.8 pipe === dann – Plynx
Ja, Gott sei Dank haben sie wenigstens das behoben. – Bergi