jQuery延迟怪异
jQuery Deferred weirdness
我正在编写一个实现延迟的小脚本,并运行了这一小段代码,但它的行为并不像我期望的Javascript那样。
var dfd = $.Deferred()
, view = $.get("filename.tmpl");
$.get("filename.json")
.always(function (model) {
dfd.resolve(model);
});
$.when(view, dfd)
.done(function (view, model) {
// do stuff with view - even if there is no model
});
这很好,但当我重构到这个时,它就停止工作了:
var dfd = $.Deferred()
, view = $.get("filename.tmpl");
$.get("filename.json").always(dfd.resolve);
$.when(view, dfd)
.done(function (view, model) {
// do stuff with view - even if there is no model
});
我看不出有什么理由不这样做。函数要求第一个参数为模型或未定义。
执行此操作时:
$.get("filename.json").always(dfd.resolve);
而不是这个:
$.get("filename.json")
.always(function (model) {
dfd.resolve(model);
});
您将获得一个不同的对象作为resolve()
方法的this
指针传递。第二个将在dfd
的上下文中调用它。第一个会将其称为从$.get()
返回的延迟对象的上下文,这是不同的。
重要的是要记住,当传递回调dfd.resolve
时,它只得到一个指向该方法的指针。它不会设置调用resolve
的上下文。这是在.always()
方法内部设置的。
相关文章:
- 延迟JQuery点击侦听器
- 如何延迟jQuery函数以等待内容淡出
- 如何延迟 jquery 悬停事件
- 悬停意图/悬停延迟 jQuery.
- 动态多个延迟 jQuery Ajax 调用
- 延迟 jQuery 脉动与计时器相结合
- 延迟jQuery切换Class效果,直到幻灯片动画完成
- API 设计:如何组合两个延迟 jQuery 对象的结果
- 从.点击.延迟jQuery
- 延迟jQuery.click函数
- 如何延迟jquery悬停事件
- 使用setTimeout来延迟jQuery动作的时间
- 延迟jquery错误函数的执行
- 在提交按钮被按下后延迟jQuery Ajax加载3秒
- 如何制作简单的延迟JQuery语句的成功
- 如何设置动画在加载下一页之前完成的延迟?[jQuery,引导程序]
- 延迟jQuery下拉菜单
- 如何延迟jquery验证插件上键事件的验证
- 西蒙游戏javascript,我如何同步按钮的灯不踩在彼此与动画()和延迟()JQUERY
- 延迟jquery/javascript中ondragover的效果