javascript代码实例教程-jQuery.Callbacks之源码解读

发布时间:2019-02-18 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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,请注明来意。