Verkettet mehrere done () Callbacks zu demselben verzögerten Versprechen

8

Kurz gesagt, möchte ich einen allgemeinen Callback haben, der immer im Falle eines erfolgreichen Ajax-Aufrufs ausgelöst wird, gefolgt von einer separaten Callback-Funktion, abhängig davon, wo die Methode aufgerufen wird.

Das scheint zu funktionieren. Meine Frage ist, ob dies eine korrekte Verwendung des Versprechensobjekts ist und ob es sicher ist anzunehmen, dass mehrere Versprechensrückrufe desselben Typs immer sequentiell gestapelt werden?

%Vor%

Ссылка

    
Johan 23.10.2014, 14:20
quelle

1 Antwort

12

Es ist eine korrekte und dokumentierte Verwendung des zurückgestellten Objekts in jQuery. Die Dokumentation gibt eindeutig an :

  

Rückrufe werden in der Reihenfolge ausgeführt, in der sie hinzugefügt wurden.

Es funktioniert anders in anderen Versprechungen Bibliotheken und in der Regel .then wird sowieso .done vorgezogen (später in der Antwort erläutert). Aber vorausgesetzt, Sie verwenden jQuery verspricht, wird es in Ordnung sequentiell, wenn sie synchron sind.

Also ist die direkte Antwort auf Ihre Frage ja.

Sie können dies jedoch auch mit asynchronem Code tun und ihn besser mit .then verknüpfen:

%Vor%

Grundsätzlich fügt done einen Handler hinzu und gibt dasselbe Versprechen zurück und .then gibt ein neues Versprechen zurück, das vom letzten verkettet ist. Im Allgemeinen würde ich nur .done benutzen, um Ketten zu beenden und wenn du den Rückgabewert behalten willst (das Argument von function(){ )

    
Benjamin Gruenbaum 23.10.2014, 14:24
quelle

Tags und Links