相关疑难解决方法(0)

延迟jquery的计时问题

这个问题是精心提炼的非异步函数版本,作为jQuery Deferred执行.

我们有2个jsfiddles:

  1. http://jsfiddle.net/XSDVX/1/ - 尽管调用了notify()函数,但不会触发progress事件.

  2. http://jsfiddle.net/UXSbw/1/ - 这里按预期触发进度事件.

唯一的区别是一行代码:

setTimeout(dfd.resolve,1);
Run Code Online (Sandbox Code Playgroud)

dfd.resolve();
Run Code Online (Sandbox Code Playgroud)

问题是:

  1. 当我们延迟解决时,如何捕获在此回调返回之前调用的.notify?想一想..then获取从它的第一个参数返回的延迟对象,并从中创建一个新的延迟对象,绑定到它完成的进度和失败事件.如果在返回deferred之前调用了notify,那么即使使用setTimeout,如何捕获它呢?(感谢/sf/users/28045811/询问此问题)

  2. 我可以摆脱setTimeout()并仍然有进展回调被解雇?

javascript jquery race-condition deferred jquery-deferred

6
推荐指数
1
解决办法
661
查看次数