Timing-Probleme mit JQuery aufgeschoben

Diese Frage ist sorgfältig destillierte Version vonNicht asynchrone Funktion, die als jQuery Deferred ausgeführt wird.

Wir haben 2 Geigen:

http://jsfiddle.net/XSDVX/1/ - hier wird das Fortschrittsereignis trotz Aufruf der Funktion notify () nicht ausgelöst.

http://jsfiddle.net/UXSbw/1/ - hier wird das Fortschrittsereignis wie erwartet ausgelöst.

Der einzige Unterschied ist eine Codezeile:

setTimeout(dfd.resolve,1);

gegen

dfd.resolve();

Fragen sind:

Wie wird dann die Benachrichtigung abgefangen, die aufgerufen wird, bevor dieser Rückruf zurückgegeben wird, wenn die Auflösung verzögert wird? Denk darüber nach. .then nimmt das zurückgestellte Objekt, das vom ersten Parameter zurückgegeben wurde, und erstellt daraus ein neues zurückgestelltes Objekt, das an die erledigten Fortschritts- und Fehlerereignisse gebunden ist. Wenn die Benachrichtigung aufgerufen wurde, bevor die zurückgestellte Benachrichtigung zurückgegeben wurde, wie kann sie dann auch mit einem setTimeout abgefangen werden? (Dank anhttps://stackoverflow.com/users/400654/kevin-b für das fragen)

Kann ich loswerdensetTimeout() und noch Fortschritt Rückruf gefeuert?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage