• jQuery的deferred对象


        /**
         * 1、普通请求
         **/
        // $.ajax({
        //     url:"a.html",
        //     success: function(data){
        //         console.log(data)
        //         $("#box").html(data)
        //     },
        //     error:function(){
        //         alert("error")
        //     }
        // })


        /**
         * 2、同一操作多回调
         **/
        // $.ajax('a.html')
        // .done(function (data) {
        //     alert("a")
        //     $("#box").html(data)
        // })
        // .fail(function (data) {
        //     console.log("fail")
        // })
        // .done(function (data) {
        //     alert("b")
        //     $("#box").append('done2222')
        // })


        /**
         * 3、 多个请求,同一回调
         **/
         // $.when($.ajax('a.html'),$.ajax('b.html'))
         // .done(function (dataA,dataB) {
         //     // for(i in data){
         //     //     console.log(data[i])
         //     // }
         //     console.log("a--",dataA[0])
         //     console.log("b--",dataB[0])
         // })
         // .fail(function (data) {
         //     console.log("error")
         // })
        
         /**
         * 4、 耗时操作; 如何让耗时比较久的请求,按顺序出牌
         **/
         // var wait = function (){
         //     var task = function () {
         //         console.log("wait还没完呢; 假设的耗时请求完毕")
         //     }
         //     setTimeout(task,3000)
         // }
         // $.when(wait())
         // .done(function (data) {
         //     console.log("这是done操作; wait操作,3秒耗时完成了么???",data)
         // })
         // .fail(function () { console.log("error") })
         //done方法会立刻执行,wait还没完成,done是得不到回调的。
         //原因是$.when()的参数只能是 deferred 对象
         //所以必须对 wait() 改写
        
         //改写 例子 一、
         // var wait = function (delay) {
         //     var task = function () {
         //         $.ajax({
         //             url: 'a.html',
         //             success:function (data) {
         //                 console.log("wait",data)
         //             }
         //         })
         //     }
         //     setTimeout(task, 3000)
         //     return delay;
         // }
         // $.when(wait(delay))
         // .done(function (data) {
         //     console.log("成功了么?",data)
         // })
         // .fail(function () { console.log("error") })

        //改写 例子 二、
         var delay = $.Deferred();
         var wait = function (delay) {
             $.ajax({
                 url: 'a.html',
                 success:function (data) {
                     // console.log("success",data)
                     $("#box").append("<p>AAAAAA</p>")
                     var task = function () {
                         console.log("task: wait 3秒吧。")
                     }
                     delay.resolve();//delay对象的执行状态从"未完成"改为"已完成",从而触发done()方法。
                     setTimeout(task,3000)
                 }
             })
         }
         $.when(wait(delay))
         .done(function (data) {
             console.log(".done: ",delay)
             console.log(".promise: ",delay.promise())
             $("#box").append("<p>BBBBBB</p>")
         })
        
         /**
         * 4、 执行状态-deferred.resolve()和deferred.reject()
         * deferred.reject()deferred对象的执行状态从"未完成"改为"已失败",从而触发fail()方法。
         **/

    注:整理自   阮一峰的网络日志

  • 相关阅读:
    Mac上的USB存储设备使用痕迹在新版操作系统有所变化
    Beware of the encrypted VM
    A barrier for Mobile Forensics
    Second Space could let suspect play two different roles easily
    Take advantage of Checkra1n to Jailbreak iDevice for App analysis
    Find out "Who" and "Where"
    Where is the clone one and how to extract it?
    Downgrade extraction on phones running Android 7/8/9
    高版本安卓手机的取证未来
    How to extract WeChat chat messages from a smartphone running Android 7.x or above
  • 原文地址:https://www.cnblogs.com/clj2017/p/9845514.html
Copyright © 2020-2023  润新知