• jq回调对象和延迟对象


    1、回调对象$.Callbacks()

    创建一个毁掉对象var cb = $.Callbacks();

    通过cb.add(fn1);向回调对象里添加一个函数,通过cb.fire()执行cb里面的函数,通过cb.remove(fn1)来移除对象里面的某个函数。

    例如:

    function aaa(){
            alert(1);
        }
        function bbb(){
            alert(2);
        }
        function ccc(){
            alert(3);
        }
        
        var cb = $.Callbacks();
        cb.add(aaa);
        cb.add(bbb);
        cb.fire();  //1,2
        cb.add(ccc);
        cb.remove(aaa);
        cb.fire();  //2,3

    cb.fire();还可以通过加上once memory unique stopOnFalse来到达不同的执行效果,例如:cb.fire('once');表示只执行一次。

    2、延迟对象$.Deferred()

    用法和对调对象类似,

    创建一个延迟对象,var dfd = $.Deferred();

    延迟对象的初始状态是pending等待状态,当状态为resolve的时候,就会执行done里面的函数,当状态为reject的时候,就会执行fail里面的函数,例如:

    var dfd = $.Deferred();
        
        //dfd延迟对象的初始状态 : pending(等待)
        
        setTimeout(function(){
            alert(1);
            //dfd.resolve();
            dfd.reject();
        },1000);
        
        dfd.done(function(){
            alert(2);
        });
        dfd.fail(function(){
            alert(3);
        });

    jq的ajax中返回的就是延迟对象,可以用done和fail分别替代success和error时的回调,例如:

    $.ajax('xxx.php').done(function(){  }).fail(function(){});
    $.when( $.ajax('xxx.php') , $.ajax('yyy.php') ).done(function(){}); //当两个请求都成功的时候执行done里面的回调
        
    $.ajax('xxx.php').then(function(){} , function(){});
  • 相关阅读:
    6.1.1.1 属性类型之数据属性
    6.1 理解对象
    5.7.2.4 random() 方法
    5.7.2.3 舍入方法
    5.7.2.2 min()和max()方法
    5.7.2.1 Math对象
    5.7.1.4 window对象
    frontend2_s9_part2_fe_d48_form
    s10_part3_django_basic.md
    frontend1_s9_part2_d47_html
  • 原文地址:https://www.cnblogs.com/toodeep/p/4753004.html
Copyright © 2020-2023  润新知