521 Stimmen

jQuery Deferreds und Versprechen - .then() vs .done()

Ich habe über jQuery deferreds und Versprechen gelesen und ich kann nicht sehen, den Unterschied zwischen mit .then() & .done() für erfolgreiche Rückrufe. Ich weiß Eric Hynds erwähnt, dass .done() y .success() auf dieselbe Funktionalität abbilden, aber ich vermute, dass dies auch für .then() da alle Rückrufe bei Abschluss eines erfolgreichen Vorgangs aufgerufen werden.

Kann mich bitte jemand über die korrekte Verwendung aufklären?

15 Stimmen

Bitte beachten Sie, dass JQuery 3.0, das im Juni 2016 veröffentlicht wurde, die erste Version war, die mit der Promises/A+ und ES2015 Promises-Spezifikation konform war. Die Implementierung davor hatte Inkompatibilitäten mit dem, was Promises liefern sollten.

0 Stimmen

I aktualisiert meine Antwort mit einer verbesserten Empfehlung, was wann zu verwenden ist.

-4voto

gleb bahmutov Punkte 1531

.done() beendet die Versprechenskette und stellt sicher, dass nichts anderes weitere Schritte anhängen kann. Das bedeutet, dass die jQuery-Versprechen-Implementierung eine beliebige unbehandelte Ausnahme auslösen kann, da niemand die Möglichkeit hat, sie mit .fail() .

In der Praxis sollten Sie, wenn Sie nicht vorhaben, weitere Schritte an ein Versprechen anzuhängen, die .done() . Für weitere Einzelheiten siehe warum Versprechungen gemacht werden müssen

7 Stimmen

Achtung! Diese Antwort wäre für mehrere Promise-Implementierungen korrekt, nicht aber für jQuery, bei dem .done() hat keine beendende Funktion. In der Dokumentation heißt es: "Da deferred.done() das Deferred-Objekt zurückgibt, können andere Methoden des Deferred-Objekts mit dieser verkettet werden, einschließlich zusätzlicher .done()-Methoden". .fail() wird nicht erwähnt, aber ja, auch das könnte verkettet werden.

2 Stimmen

Mein Fehler, habe die jQuery nicht überprüft

2 Stimmen

@glebbahmutov - vielleicht sollten Sie diese Antwort löschen, damit andere nicht verwirrt werden? Nur ein freundlicher Vorschlag :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X