jQuery回调对象使用方法

作者:日期:2017-02-20 11:24:34 点击:344

 

jQuery回调对象

jQuery向开发者提供了外部接口调用,但是$.Callbacks()模块的开发目的是为了给内部$.ajax() 和 $.Deferred()模块提供统一的基本功能组件。它可以用来作为类似基础定义的新组件的功能。

jQuery.Callbacks是jquery在1.7版本之后加入的,是从1.6版中的_Deferred对象中抽离的,主要用来进行函数队列的add、remove、fire、lock等操作,并提供once、memory、unique、stopOnFalse四个option进行一些特殊的控制。

这个函数常见的应用场景是事件触发机制,也就是设计模式中的观察者模式的发布、订阅机制,目前Callbacks对象用于queue、ajax、Deferred对象中。

ajax: function(url, options) { 
//省略代码
deferred = jQuery.Deferred(),
completeDeferred = jQuery.Callbacks("once memory")
..............
}

不难发现jQuery.Callbacks还提供“once memory”等参数用来处理:

? once: 确保这个回调列表只执行( .fire() )一次(像一个递延 Deferred)。 
? memory: 保持以前的值,将添加到这个列表的后面的最新的值立即执行调用任何回调 (像一个递延 Deferred)。 
? unique: 确保一次只能添加一个回调(所以在列表中没有重复的回调)。 
? stopOnFalse: 当一个回调返回false 时中断调用。

var callbacks = $.Callbacks('once'); 

callbacks.add(function() {
alert('a');
})

callbacks.add(function() {
alert('b');
})

callbacks.fire(); //输出结果: 'a' 'b'
callbacks.fire(); //未执行

once的作用是使callback队列只执行一次。

上一篇: 深入理解 ES6 的解构赋值

下一篇: jQuery中的ready和load事件