problemas de temporização com jquery adiada

Esta questão é cuidadosamente destilada versão dofunção não assíncrona executada como jQuery Adiada.

Nós temos 2 jsfiddles:

http://jsfiddle.net/XSDVX/1/ - aqui o evento de progresso não é disparado, apesar de chamar a função notify ().

http://jsfiddle.net/UXSbw/1/ - aqui o evento de progresso é disparado como esperado.

A única diferença é uma linha de código:

setTimeout(dfd.resolve,1);

versus

dfd.resolve();

Perguntas são:

Como está capturando o .notify que é chamado antes que este callback retorne quando atrasarmos a resolução? Pense nisso. Então, pega o objeto deferido que foi retornado de seu primeiro parâmetro e cria um novo objeto diferido dele, vinculando-o aos eventos de progresso e falha. Se a notificação foi chamada antes que o adiado fosse retornado, como é que ela é capturada mesmo com um setTimeout? (Graças ahttps://stackoverflow.com/users/400654/kevin-b por perguntar isso)

Posso me livrar desetTimeout() e ainda tem callback de progresso disparado?

questionAnswers(1)

yourAnswerToTheQuestion