JQuery源码解析---jQuery回调对象
2016-09-19 15:16
363 查看
//jquery回调对象
jquery.Callbacks一般开发者接触的很少的,虽然jQuery开发者提供了外部接口调用,但是$.Callbacks()模块的开发目的是为了给内部$.ajax()和$.Deferred()模板提供统一的基本功能组件。
它可以用来作为类似基础定义的新组件的功能。
jQuery.Callbacks是jquery在1.7版本之后加入的,是从1.6版本中的_Deferred对象中抽离出来的,主要用来进行函数队列的add、reomve、fire、lock等操作,并提供了once,memory,unique,stopOnFalse四个option进行一些特殊的控制。
这个函数最常见的应用场景就是事件触发机制,也就是设计模式中的观察者模式的发布、订阅机制,目前Callbacks对象用于queue、ajax、Deferred对象中,本小节主要是一些简单的例子去理解的使用。
example:
function fn1(value){
console.log("fn1 says"+value);
}
function fn2(value){
console.log("fn2 says"+value);
}
var callbacks = $.Callbacks();
callbacks.add(fn1);
callbacks.fire("liu");
callbacks.add(fn2);
callbacks.fire("liu");上面例子中,我们使用了$.Callbacks()的两个方法:add()和fire().add()支持添加新的回调列表,而fire()提供了一种用于处理在同一列表中的回调方法的途径。
另外一个方法是$.Callbacks()的remove()方法,用于从回调列表中删除一个特定的回调。
不难发现jQuery.Callbacks还提供“once memory”等参数用来处理:
☑ once: 确保这个回调列表只执行( .fire() )一次(像一个递延 Deferred)。
☑ memory: 保持以前的值,将添加到这个列表的后面的最新的值立即执行调用任何回调 (像一个递延 Deferred)。
☑ unique: 确保一次只能添加一个回调(所以在列表中没有重复的回调)。
☑ stopOnFalse: 当一个回调返回false 时中断调用。
once的作用是使callback队列只执行一次。
jquery.Callbacks一般开发者接触的很少的,虽然jQuery开发者提供了外部接口调用,但是$.Callbacks()模块的开发目的是为了给内部$.ajax()和$.Deferred()模板提供统一的基本功能组件。
它可以用来作为类似基础定义的新组件的功能。
jQuery.Callbacks是jquery在1.7版本之后加入的,是从1.6版本中的_Deferred对象中抽离出来的,主要用来进行函数队列的add、reomve、fire、lock等操作,并提供了once,memory,unique,stopOnFalse四个option进行一些特殊的控制。
这个函数最常见的应用场景就是事件触发机制,也就是设计模式中的观察者模式的发布、订阅机制,目前Callbacks对象用于queue、ajax、Deferred对象中,本小节主要是一些简单的例子去理解的使用。
example:
function fn1(value){
console.log("fn1 says"+value);
}
function fn2(value){
console.log("fn2 says"+value);
}
var callbacks = $.Callbacks();
callbacks.add(fn1);
callbacks.fire("liu");
callbacks.add(fn2);
callbacks.fire("liu");上面例子中,我们使用了$.Callbacks()的两个方法:add()和fire().add()支持添加新的回调列表,而fire()提供了一种用于处理在同一列表中的回调方法的途径。
另外一个方法是$.Callbacks()的remove()方法,用于从回调列表中删除一个特定的回调。
不难发现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队列只执行一次。
相关文章推荐
- jQuery源码笔记——回调对象
- jQuery 2.0.3 源码分析 回调对象
- jQuery源码阅读(十二)---Callbacks回调对象
- jquery源码解析:jQuery延迟对象Deferred(工具方法)详解1
- jquery源码解析----对象的创建
- jquery的2.0.3版本源码系列(6):2880-3042行,回调对象,对函数的统一管理
- jquery源码解析:jQuery静态属性对象support详解
- jQuery-1.9.1源码分析系列(五) 回调对象
- jQuery 2.0.3 源码分析 回调对象 - Callbacks
- jQuery源码解析--回调模块($.Callbacks())
- jquery的2.0.3版本源码系列(6)-2880-3042行,回调对象,对函数的统一管理
- jquery源码解析:val方法和valHooks对象详解
- jQuery-1.9.1源码分析系列(五) 回调对象
- JQuery源码解析-- 对象的创建
- jQuery源码解析---jQuery回调模块的结构
- jquery 1.7.2源码解析(二)构造jquery对象
- jquery Callbacks 回调对象的读书笔记-源码分析
- JQuery源码之“对象的结构解析”
- jquery源码01---(2880 , 3042) Callbacks : 回调对象 : 对函数的统一管理
- jquery源码解析:jQuery延迟对象Deferred(工具方法)详解2