problemy z synchronizacją z odroczonym jquery

To pytanie jest starannie destylowaną wersjąnie asynchroniczna funkcja wykonywana jako jQuery Deferred.

Mamy 2 jsfiddles:

http://jsfiddle.net/XSDVX/1/ - tutaj zdarzenie progress nie jest uruchamiane pomimo wywołania funkcji notify ().

http://jsfiddle.net/UXSbw/1/ - tutaj zdarzenie postępu jest uruchamiane zgodnie z oczekiwaniami.

Jedyną różnicą jest jedna linia kodu:

setTimeout(dfd.resolve,1);

przeciw

dfd.resolve();

Pytania to:

W jaki sposób .then przechwytywanie .notify, które jest wywoływane zanim to wywołanie zwrotne powróci, gdy opóźnimy rozstrzygnięcie? Pomyśl o tym. .ten pobiera obiekt odroczony, który został zwrócony z jego pierwszego parametru i tworzy z niego nowy obiekt odroczony, wiążąc się z wykonanym postępem i zdarzeniami niepowodzenia. Jeśli powiadomienie zostało wywołane przed zwróceniem odroczonego, jak to się dzieje, że przechwytuje go nawet z setTimeout? (Dziękihttps://stackoverflow.com/users/400654/kevin-b za to pytanie)

Czy mogę się pozbyćsetTimeout() i nadal masz wywołanie zwrotne postępu?

questionAnswers(1)

yourAnswerToTheQuestion