脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-jQuery.Callbacks之源码解读,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。
按 Ctrl+C 复制代码
需要特殊注意的是有一个firing这个变量,下面给出这个变量的应用场景:
1、在Callbacks.add中firing为true的情况
复制代码
1 // 定义三个将要增加到回调列表的回调函数fn1,fn2,fn3
2 function fn1(val){
3 console.LOG( 'fn1 says ' + val );
4 //此时Callbacks函数内部的firingLength会自动加1,虽然初始化的Callbacks对象有memory选项,
5 //但add并不会立即执行fn2,而是等执行完add前的函数队列之后再执行fn2
6 cbs.add(fn2);
7 }
8 function fn2(val){
9 console.log( 'fn2 says ' + val );
10 }
11 function fn3(val){
12 console.log( 'fn3 says ' + val );
13 }
14
15 // Callbacks传递了memory
16 // 也可以这样使用$.Callbacks({ memory: true });
17 VAR cbs = $.Callbacks(';memory');
18
19 // 将fn1增加到回调列表中,因为在fn1中有执行了add(fn2)操作,因此回调列表中的回调为fn1,fn2
20 cbs.add(fn1);
21
22 //fn1 says foo
23 //fn2 says foo
24 cbs.fire('foo');
25
26 //将之前fire的参数传递给最近增加的回调fn3,并执行fn3
27 //fn3 says foo
28 cbs.add(fn3);
29
30 //再执行一次fire,注意此时回调列表中的回调依次是fn1,fn2,fn3,fn2
31 //fn1 says bar
32 //fn2 says bar
33 //fn3 says bar
34 //fn2 says bar
35 cbs.fire('bar');
复制代码
2、在Callbacks.fireWITh中firing为true的情况
复制代码
function fn1(val){
console.log( 'fn1 says ' + val );
}
function fn2(val){
console.log( 'fn2 says ' + val );
//此时并不会立即触发cbs里面的回调,而是先把[window, ['bar']]放入stack里面
//等执行完fireWith前的函数队列之后才执行
cbs.fireWith(window, ['bar']);
//firingLength会减一,一定要将当前的函数remove掉,否则会导致死循环
cbs.remove(fn2);
}
var cbs = $.Callbacks();
cbs.add(fn1);
cbs.add(fn2);
//fn1 says bar
//fn2 says bar
//fn1 says bar
cbs.fire('bar');
觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!
以上是脚本宝典为你收集整理的javascript代码实例教程-jQuery.Callbacks之源码解读全部内容,希望文章能够帮你解决javascript代码实例教程-jQuery.Callbacks之源码解读所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。