• jQuery之Callbacks函数功能测试


    一个多用途的回调列表对象,提供了强大的的方式来管理回调函数列表。 

    1.创建Callbacks函数

    var callbacks=$.Callbacks();
    //下面四个参数可以两两组合once、memory、unique、stopOnFalse
    var callbacks = $.Callbacks( "once" );
    var callbacks = $.Callbacks( "memory" );
    var callbacks = $.Callbacks( "unique" );
    var callbacks = $.Callbacks( "stopOnFalse");
    var callbacks = $.Callbacks( "unique memory" );
    

    2.Callbacks对象支持的方法

    callbacks.add(fn1);//添加回调函数
    callbacks.remove(fn1);//删除回调函数
    callbacks.fire("args111");//传递参数触发回调函数
    callbacks.fireWith({name:"xiaoming"},['args11']);//改变上下文触发回调函数
    callbacks.empty();//清空回调函数列表
    callbacks.disable();//禁用回调函数,以后都不能再使用
    callbacks.has(fn1);//判断回调函数列表中是否存在函数fn1
    callbacks.fired();//判断这个回调函数是否回调过
    

    3.测试简单的回调函数

    function fn1(val){
    console.log("fn1:"+val);
    }
    function fn2(val){
    console.log("fn2:"+val);
    }
    function fn3(val){
    console.log("fn3:"+val);
    }
    
    var callbacks=$.Callbacks();
    callbacks.add(fn1);
    callbacks.fire("111");
    //fn1:111
    callbacks.add(fn2);
    callbacks.fire("222");
    //fn1:222
    //fn2:222
    callbacks.add(fn3);
    callbacks.fire("333");
    //fn1:333
    //fn2:333
    //fn3:333
    callbacks.remove(fn1);
    callbacks.fire("444");
    //fn2:444
    //fn3:444
    callbacks.empty();
    callbacks.fire("555");
    //无输出
    callbacks.add(fn1);
    callbacks.fire("666");
    //fn1:666
    callbacks.disable();//禁用了的回调列表不能再恢复使用
    callbacks.fire("777");
    //无输出
    callbacks.add(fn2);
    callbacks.fire("888");
    //无输出
    

    4.测试只能触发一次的回调函数

    function fn1(val){
    console.log("fn1:"+val);
    }
    function fn2(val){
    console.log("fn2:"+val);
    }
    function fn3(val){
    console.log("fn3:"+val);
    }
    
    var callbacks=$.Callbacks("once");
    callbacks.add(fn1);
    callbacks.fire("111");
    //fn1:111
    callbacks.add(fn2);
    callbacks.fire("222");
    //无输出

    5.测试可以记录上次触发过程并且在新添加回调函数后直接触发

    function fn1(val){
    console.log("fn1:"+val);
    }
    function fn2(val){
    console.log("fn2:"+val);
    }
    function fn3(val){
    console.log("fn3:"+val);
    }
    
    var callbacks=$.Callbacks("memory");
    callbacks.add(fn1);
    callbacks.fire("111");
    //fn1:111
    callbacks.add(fn2);
    //fn2:111
    callbacks.fire("222");
    //fn1:222
    //fn2:222


    6.测试只能触发一次并且记录上次触发过程的回调函数

    function fn1(val){
    console.log("fn1:"+val);
    }
    function fn2(val){
    console.log("fn2:"+val);
    }
    function fn3(val){
    console.log("fn3:"+val);
    }
    
    var callbacks=$.Callbacks("once memory");
    callbacks.add(fn1);
    callbacks.fire("111");
    //fn1:111
    callbacks.add(fn2);
    //fn2:111
    callbacks.fire("222");
    //无输出

    7.测试列表中不存在重复函数的回调函数

    function fn1(val){
    console.log("fn1:"+val);
    }
    function fn2(val){
    console.log("fn2:"+val);
    }
    function fn3(val){
    console.log("fn3:"+val);
    }
    
    var call=$.Callbacks();
    var callbacks=$.Callbacks("unique");
    call.add(fn1);
    callbacks.add(fn1);
    call.fire("111");
    //fn1:111
    callbacks.fire("111");
    //fn1:111
    call.add(fn1);
    callbacks.add(fn1);
    call.fire("222");
    //fn1:222
    //fn1:222
    callbacks.fire("222");
    //fn1:222

    8.测试列表中上一条函数影响到下一个回调函数的设置

    function fn1(val){
    console.log("fn1:"+val);
    if(val=="111"){
    return true;
    }
    return false;
    }
    function fn2(val){
    console.log("fn2:"+val);
    }
    var callbacks=$.Callbacks("stopOnFalse");
    callbacks.add(fn1);
    callbacks.add(fn2);
    callbacks.fire("111");
    //fn1:111
    //fn2:111
    callbacks.fire("222");
    //fn1:111
  • 相关阅读:
    二、Eureka服务注册与发现
    数据仓库性能测试方法论与工具集
    【前端学习】—多种方式实现数组拍平(十一)
    二维数组练习
    ROS学习笔记(四)---使用 VScode 启动launch文件运行多个节点
    如何搭建虚拟专有网络访问公司内网
    【Rust日报】2022-11-09 稳定复现的 HashMap 陷阱
    Linux Vi编辑器基础操作指南
    营丘福稻品牌山东大米 国稻种芯·中国水稻节:淄博高青招牌
    测试员如何面对30岁后的下坡路,伤不起的年龄,职业道路何去何从?
  • 原文地址:https://blog.csdn.net/weixin_71792169/article/details/127758226