Javascript 理解jQuery文档中的$.deferred示例
我只是想揭开方法Javascript 理解jQuery文档中的$.deferred示例,javascript,jquery,Javascript,Jquery,我只是想揭开方法$.Deferred在jQuery中的工作原理。我知道它主要用于AJAX内容,但我也希望将此方法用于非AJAX内容。我在阅读此方法时遇到了以下代码: $.fn.bindOnce = function( event, callback ) { var element = $( this[ 0 ] ), defer = element.data( "bind_once_defer_" + event ); if ( !defer ) {
$.Deferred
在jQuery中的工作原理。我知道它主要用于AJAX内容,但我也希望将此方法用于非AJAX内容。我在阅读此方法时遇到了以下代码:
$.fn.bindOnce = function( event, callback ) {
var element = $( this[ 0 ] ),
defer = element.data( "bind_once_defer_" + event );
if ( !defer ) {
defer = $.Deferred();
function deferCallback() {
element.unbind( event, deferCallback );
defer.resolveWith( this, arguments );
}
element.bind( event, deferCallback )
element.data( "bind_once_defer_" + event , defer );
}
return defer.done( callback ).promise();
// what is this piece of code really doing and why is it necessary ?
};
。。。现在,如果你一行一行地浏览代码,就很容易理解正在发生的事情
jQuery文档逐行告诉我们发生了什么,如下所示:
- 检查元素是否已为给定事件附加了延迟
- 如果不是,则创建它并使其在第一次触发事件时得到解决
- 然后将给定的回调附加到延迟的回调并返回承诺
return defer.done( callback ).promise();
我无法理解这一行代码的目的,以及它为什么有用,以及promise方法在这个场景中到底做了什么
有人能解释一下吗?promise()
为延迟请求创建一个promise对象。promise对象公开了延迟服务器上可用的方法的子集;它允许客户端向各种事件注册事件处理程序,但不修改延迟事件本身
从:
promise对象提供了延迟
对象(然后
,完成
,失败
,始终
,管道
,状态
和承诺
)方法的子集,以防止用户更改延迟的状态
所以,
return defer.done( callback ).promise();
。。。正在添加待在延迟(延迟
)解析时执行的回调
函数,然后为延迟返回相应的承诺
你可能会发现以下问题很有用 你能不能记下,并在以后的工作中应用它们?您的问题最初的格式很差,必须由编辑进行编辑/改进。@Matt Sure,会记下的!:)谢谢