zoukankan      html  css  js  c++  java
  • 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(){});
  • 相关阅读:
    linux | 一次网卡故障处理
    KVM | centos 安装 window 虚拟机
    DNS | named.run文件很大的处理方法
    01
    802.11X用户身份验证
    802.11有线等效加密WEP
    802.11成帧细节
    802.11 MAC基础
    【转载】我为什么放弃了 Linux 内核学习?
    Linux网络编程(一):一个简单的socket程序
  • 原文地址:https://www.cnblogs.com/toodeep/p/4753004.html
Copyright © 2011-2022 走看看