1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      jquery延遲對(duì)象怎么使用

      這篇文章主要介紹“jquery延遲對(duì)象怎么使用”,在日常操作中,相信很多人在jquery延遲對(duì)象怎么使用問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”jquery延遲對(duì)象怎么使用”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

      為民權(quán)等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及民權(quán)網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、民權(quán)網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

      jquery延遲對(duì)象是“Deferred”,是通過(guò)調(diào)用jQuery.Deferred()方法來(lái)創(chuàng)建的可鏈接的實(shí)用對(duì)象。延遲對(duì)象是可鏈接的,類似于一個(gè)jQuery對(duì)象可鏈接的方式,區(qū)別于它有自己的方法;它可注冊(cè)多個(gè)回調(diào)函數(shù)到回調(diào)列表,調(diào)用回調(diào)列表并且傳遞異步或同步功能的成功或失敗的狀態(tài)。

      jQuery 1.5中介紹了 Deferred 延遲對(duì)象,它是通過(guò)調(diào)用 jQuery.Deferred() 方法來(lái)創(chuàng)建的可鏈接的實(shí)用對(duì)象。它可注冊(cè)多個(gè)回調(diào)函數(shù)到回調(diào)列表,調(diào)用回調(diào)列表并且傳遞異步或同步功能的成功或失敗的狀態(tài)。

      延遲對(duì)象是可鏈接的,類似于一個(gè) jQuery 對(duì)象可鏈接的方式,區(qū)別于它有自己的方法。在創(chuàng)建一個(gè) Deferred 對(duì)象之后,您可以使用以下任何方法,直接鏈接到通過(guò)調(diào)用一個(gè)或多個(gè)的方法創(chuàng)建或保存的對(duì)象。

      列表

      函數(shù)說(shuō)明
      $.Deferred()用來(lái)返回一個(gè)鏈?zhǔn)綄?shí)用對(duì)象方法來(lái)注冊(cè)多個(gè)回調(diào),并且調(diào)用回調(diào)隊(duì)列,傳遞任何同步或異步功能成功或失敗的狀態(tài)。
      deferred.always()用于當(dāng)Deferred(延遲)對(duì)象被受理或被拒絕時(shí),調(diào)用添加的處理程序
      deferred.done()用于當(dāng)Deferred(延遲)對(duì)象被受理時(shí),調(diào)用添加的處理程序
      deferred.fail()用于當(dāng) Deferred (延遲)對(duì)象被拒絕時(shí),調(diào)用添加的處理程序
      deferred.progress()用于當(dāng)Deferred(延遲)對(duì)象生成進(jìn)度通知時(shí),調(diào)用添加處理程序
      deferred.isRejected()1.8-用來(lái)確定 Deferred 對(duì)象是否已被拒絕
      deferred.isResolved()1.8-用來(lái)確定 Deferred 對(duì)象是否已被拒絕
      deferred.notify()用于傳遞參數(shù)給進(jìn)行中的回調(diào)
      deferred.notifyWith()用于傳遞參數(shù),上下文對(duì)象給進(jìn)行中的回調(diào)
      deferred.reject()用于拒絕延遲對(duì)象,并傳遞參數(shù)給失敗回調(diào)函數(shù)
      deferred.rejectWith()用于拒絕延遲對(duì)象,并傳遞參數(shù)和上下文對(duì)象給失敗回調(diào)函數(shù)
      deferred.resolve()用于解決延遲對(duì)象,并并傳遞參數(shù)給doneCallbacks 回調(diào)函數(shù)
      deferred.resolveWith()用于解決延遲對(duì)象,并并傳遞參數(shù)和上下文對(duì)象給doneCallbacks 回調(diào)函數(shù)
      deferred.state()用于確定一個(gè)Deferred(延遲)對(duì)象的當(dāng)前狀態(tài)
      deferred.pipe()用于過(guò)濾狀態(tài)或通過(guò)函數(shù)返回的延遲對(duì)象的值
      deferred.then()用于當(dāng)Deferred(延遲)對(duì)象被解決,拒絕或仍在進(jìn)行中時(shí),調(diào)用添加處理程序。
      deferred.catch()用于當(dāng)Deferred對(duì)象被拒絕(reject)時(shí),調(diào)用添加的處理程序。
      deferred.promise()用于返回 Deferred(延遲)的 Promise 對(duì)象
      .promise()用于返回一個(gè) Promise 對(duì)象,觀察某種類型被綁定到集合的所有行動(dòng),是否已被加入到隊(duì)列中。

      說(shuō)明

      $.Deferred()

      $.Deferred() 是一個(gè)構(gòu)造函數(shù),用來(lái)返回一個(gè)鏈?zhǔn)綄?shí)用對(duì)象方法來(lái)注冊(cè)多個(gè)回調(diào),并且調(diào)用回調(diào)隊(duì)列,傳遞任何同步或異步功能成功或失敗的狀態(tài)。

      提示:

      • $.Deferred() 構(gòu)造函數(shù)創(chuàng)建一個(gè)新的 Deferred(延遲)對(duì)象, jQuery.Deferred
        可傳遞一個(gè)可選的函數(shù),該函數(shù)在構(gòu)造方法返回之前被調(diào)用并傳遞一個(gè)新的 Deferred 對(duì)象作為函數(shù)的第一個(gè)參數(shù)。例如被調(diào)用的函數(shù)可以使用 deferred.then()來(lái)附加回調(diào)函數(shù)。

      • 一個(gè) Deferred 對(duì)象開(kāi)始于掛起狀態(tài)。任何使用 deferred.then(), deferred.always(),
        deferred.done(), 或者 deferred.fail() 添加到這個(gè)對(duì)象的回調(diào)函數(shù)都是排隊(duì)等待執(zhí)行的。

      調(diào)用 deferred.resolve() 或 eferred.resolveWith() 轉(zhuǎn)換延遲到解決狀態(tài)后立即執(zhí)行設(shè)置的
      doneCallbacks 。
      調(diào)用 deferred.reject() 或 deferred.rejectWith() 轉(zhuǎn)換延遲到拒絕狀態(tài)后立即執(zhí)行設(shè)置的 failCallbacks 。一旦對(duì)象已經(jīng)進(jìn)入了解決或拒絕狀態(tài),它保持該狀態(tài)。回調(diào)仍然可以添加到已解決或已拒絕的 Deferred 對(duì)象——它們會(huì)立即執(zhí)行。

      語(yǔ)法

      • $.Deferred( [beforeStart ] )

      jQuery1.5新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      beforeStartFunction類型個(gè)在構(gòu)造函數(shù)返回之前調(diào)用的函數(shù)

      返回值

      jQuery.Deferred()工廠函數(shù)創(chuàng)建一個(gè)新的deferred對(duì)象。


      deferred.always()

      當(dāng)Deferred(延遲)對(duì)象被受理或被拒絕時(shí),調(diào)用通過(guò)deferred.always() 添加的處理程序。

      提示:參數(shù)可以是一個(gè)函數(shù)或一個(gè)函數(shù)數(shù)組。由于 deferred.always() 返回的是一個(gè) Deferred 對(duì)象,所以可以連接其他的延遲對(duì)象方法(這里是指可以繼續(xù)調(diào)用Deferred對(duì)象的方法),包括額外的 .always 方法。 當(dāng) Deferred 對(duì)象得到解決或被拒絕時(shí),通過(guò)deferred.always() 添加的回調(diào)函數(shù)按它們被添加時(shí)的順序執(zhí)行,并且可以作為參數(shù)傳遞給如下的方法使用:resolve , reject , resolveWith 或 rejectWith。

      語(yǔ)法

      • deferred.always( alwaysCallbacks [, alwaysCallbacks ] )

      jQuery1.6新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      alwaysCallbacks可選/Function類型一個(gè)函數(shù)或者函數(shù)數(shù)組,當(dāng)Deferred(延遲)對(duì)象得到解決或被拒絕時(shí)被調(diào)用

      注意: deferred.always()方法接收了Deferred對(duì)象.resolve()或.reject()使用的參數(shù), 這往往是非常不同的。 為此, 最好的只用它的行為,而不去檢查他的參數(shù)。 在大多數(shù)情況下, 使用顯式 .done() 或 .fail()處理程序,因?yàn)樗麄兊膮?shù)都是已知的。

      返回值

      deferred.always()返回Deferred(延遲)對(duì)象

      示例&說(shuō)明

      jQuery.get()方法返回一個(gè)來(lái)自一個(gè)Deferred(延遲)對(duì)象的jqXHR對(duì)象,我們可以附加一個(gè)成功和錯(cuò)誤使用deferred.always()方法的回調(diào),jQuery示例代碼:

       $.get( "test.php" ).always(function() {
          alert( "帶有成功和錯(cuò)誤的回調(diào)參數(shù)的$.get方法已完成。" );
       })


      deferred.done()

      當(dāng)Deferred(延遲)對(duì)象被受理時(shí),調(diào)用通過(guò)延遲對(duì)象函數(shù)deferred.done()添加的處理程序。

      提示:該方法接受一個(gè)或者多個(gè)參數(shù)。deferred.done() 返回的是一個(gè) Deferred 對(duì)象, 可以連接其他的延遲對(duì)象方法(繼續(xù)調(diào)用Deferred 對(duì)象的方法),包括額外的 .done() 方法。當(dāng)Deferred 對(duì)象得到解決時(shí),通過(guò)deferred.done()添加的回調(diào)函數(shù)按它們被添加時(shí)的順序執(zhí)行,并且可以作為參數(shù)傳遞給如下的方法使用:resolve,resolveWith。

      語(yǔ)法

      • deferred.done( doneCallbacks [, doneCallbacks ] )

      jQuery1.5新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      doneCallbacks可選/Function類型一個(gè)函數(shù)或者函數(shù)數(shù)組,當(dāng)Deferred(延遲)對(duì)象得到解決時(shí)被調(diào)用

      返回值

      deferred.done() 返回的是一個(gè) Deferred 對(duì)象

      示例&說(shuō)明

      HTML示例代碼:

       
       

      Ready...

      jQuery示例代碼

      function fn1() {
        $("p").append(" 1 ");
      }
      function fn2() {
        $("p").append(" 2 ");
      }
      function fn3(n) {
        $("p").append(n + " 3 " + n);
      }
      
      var dfd = $.Deferred();//創(chuàng)建一個(gè)延遲對(duì)象
      
      //添加dfd被解決時(shí)需要的被調(diào)用的處理函數(shù)
      dfd
      .done( [fn1, fn2], fn3, [fn2, fn1] )// 連接一個(gè)函數(shù)或者函數(shù)數(shù)組
      .done(function(n) {//可以連接其他的方法
        $("p").append(n + " we're done.");
      });
      
      //當(dāng)點(diǎn)擊按鈕時(shí)修改延遲對(duì)象的狀態(tài)為已解決
      //此時(shí)調(diào)用通過(guò)deferred.done()添加的延遲對(duì)象被受理后的處理函數(shù)
      $("button").bind("click", function() {
        dfd.resolve("and");//輸出:1 2 and 3 and 2 1 and we're done.
      });


      deferred.fail()

      當(dāng) Deferred (延遲)對(duì)象被拒絕時(shí),調(diào)用通過(guò)deferred.fail()添加的處理程序。

      提示:該方法接受一個(gè)或者多個(gè)參數(shù)。 deferred.fail() 返回的是一個(gè) Deferred 對(duì)象, 可以連接其他的延遲對(duì)象方法(繼續(xù)調(diào)用其他Deferred 對(duì)象的方法),包括額外的 .fail() 方法。當(dāng) Deferred 對(duì)象被拒絕時(shí),通過(guò)deferred.fail()添加的回調(diào)函數(shù) 按它們被添加時(shí)的順序執(zhí)行,并且可以作為參數(shù)傳遞給如下的方法使用:deferred.resolve() 或 deferred.rejectWith()。

      語(yǔ)法

      • deferred.fail( failCallbacks [, failCallbacks ] )

      jQuery1.5新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      failCallbacks可選/Function類型一個(gè)函數(shù)或者函數(shù)數(shù)組,當(dāng)Deferred(延遲)對(duì)象被拒絕時(shí)被調(diào)用

      返回值

      deferred.fail() 返回的是一個(gè) Deferred 對(duì)象

      示例&說(shuō)明

      jQuery示例代碼

      $(function () { 
          $.get("test.php")
              .done(function(){ alert("$.get 成功!"); })//解決時(shí)調(diào)用
              .fail(function(){ alert("$.get 失敗!"); });//被拒絕時(shí)調(diào)用
      })


      deferred.progress()

      deferred.progress() 函數(shù)當(dāng)Deferred(延遲)對(duì)象生成進(jìn)度通知時(shí),調(diào)用添加處理程序。

      注意:當(dāng)通過(guò)調(diào)用 notify 或 notifyWith 使延遲對(duì)象產(chǎn)生進(jìn)度通知時(shí),progressCallbacks 就會(huì)被調(diào)用。 由于 deferred.progress()返回的是延遲對(duì)象,所以其它延遲對(duì)象方法可以鏈接到該對(duì)象上(鏈?zhǔn)秸{(diào)用)。當(dāng)延遲對(duì)象被 resolved 或 rejected 時(shí), 進(jìn)度回調(diào)函數(shù)將不再被調(diào)用,但是當(dāng)Deferred (延遲)進(jìn)入resolved(解決) 或 rejected(拒絕)狀態(tài)后,新添加任何的progressCallbacks將立即執(zhí)行,使用的參數(shù)被傳遞給.notify() 或 notifyWith()調(diào)用

      語(yǔ)法

      • deferred.progress( progressCallbacks[,progressCallbacks] )

      jQuery 1.7 新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      progressCallbacks可選/Function類型一個(gè)函數(shù)或者函數(shù)數(shù)組,當(dāng)Deferred(延遲)對(duì)象生成正在執(zhí)行中的進(jìn)度通知時(shí)被調(diào)用。

      返回值

      deferred.progress() 返回的是一個(gè) Deferred 對(duì)象


      deferred.isRejected()

      deferred.isRejected() 函數(shù)用來(lái)確定 Deferred 對(duì)象是否已被拒絕。

      從jQuery1.7開(kāi)始已經(jīng)過(guò)時(shí),請(qǐng)使用 deferred.state() 代替。

      注意:

      • 如果 Deferred(延遲)對(duì)象是在被拒絕的狀態(tài),則返回 true。這意味著 deferred.reject() 或者deferred.rejectWith() 已經(jīng)在對(duì)象上被調(diào)用過(guò),并且 failCallbacks 已經(jīng)被調(diào)用過(guò)(或者正處于被調(diào)用的階段)。

      • Deferred(延遲)對(duì)象可以有三種狀態(tài):掛起(pending),解決(resolved),或拒絕(rejected);使用 deferred.isResolved() 來(lái)判斷延遲對(duì)象是否在解決狀態(tài)。

      語(yǔ)法

      • deferred.isRejected()

      jQuery 1.5 新增該函數(shù),1.7過(guò)時(shí),1.8移除

      返回值

      deferred.isRejected() 返回的是一個(gè) Boolean類型


      deferred.isResolved()

      deferred.isResolved() 函數(shù)用來(lái)確定 Deferred 對(duì)象是否已被解決。

      從jQuery1.7開(kāi)始已經(jīng)過(guò)時(shí),請(qǐng)使用 deferred.state() 代替。

      注意:

      • 如果 Deferred(延遲)對(duì)象是在被解決的狀態(tài),則返回 true。這意味著 deferred.resolve() 或者 deferred.resolveWith() 已經(jīng)在對(duì)象上被調(diào)用過(guò),并且 doneCallbacks 已經(jīng)被調(diào)用過(guò)(或者正處于被調(diào)用的階段)。

      • Deferred(延遲)對(duì)象可以有三種狀態(tài):掛起(pending),解決(resolved),或拒絕(rejected);使用 deferred.isRejected() 來(lái)判斷延遲對(duì)象是否在拒絕狀態(tài)。

      語(yǔ)法

      • deferred.isResolved()

      jQuery 1.5 新增該函數(shù),1.7過(guò)時(shí),1.8移除

      返回值

      deferred.isResolved() 返回的是一個(gè) Boolean類型


      deferred.notify()

      deferred.notify() 函數(shù)用于定一個(gè)參數(shù),傳遞給正在調(diào)用的延遲對(duì)象上的回調(diào)函數(shù) ( progressCallbacks )。

      注意:

      • 通常,只有延遲對(duì)象(Deferred)的創(chuàng)建者才能調(diào)用此方法。

      • 你可以通過(guò)調(diào)用 deferred.promise() 返回一個(gè)受限的 Promise 對(duì)象,來(lái)阻止其它代碼改變延遲對(duì)象的狀態(tài)或報(bào)告它的狀態(tài)。

      • 當(dāng) deferred.notify 被訪問(wèn)時(shí), 任何 progressCallbacks 可以通過(guò)訪問(wèn) deferred.then 或者 deferred.progress 來(lái)添加。回調(diào)依照他們添加時(shí)的順序執(zhí)行。

      通過(guò)來(lái)自.notify()的傳遞參數(shù)給正在調(diào)用的延遲對(duì)象上的回調(diào)函數(shù),當(dāng)遲延對(duì)象已經(jīng)被
      resolved 或被 rejected 之后,再調(diào)用任何 .notify() (或者添加 progressCallbacks) 都會(huì)
      被忽略

      語(yǔ)法

      • deferred.notify( args )

      jQuery 1.7 新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      args可選/Object類型傳遞一個(gè)可選的參數(shù)給進(jìn)行中的回調(diào)(progressCallbacks)

      返回值

      deferred.notify() 返回的是一個(gè) Deferred 對(duì)象

      小知識(shí)

      jQuery提供的deferred.promise()方法的作用是,在原來(lái)的Deferred 對(duì)象上返回另一個(gè) Deferred 對(duì)象,即受限制的 Promise 對(duì)象,受限制的 Promise 對(duì)象只開(kāi)放與改變執(zhí)行狀態(tài)無(wú)關(guān)的方法(比如done()方法和fail()方法),屏蔽與改變執(zhí)行狀態(tài)有關(guān)的方法(比如resolve()方法和reject()方法),從而使得執(zhí)行狀態(tài)不能被改變。

      首先看一個(gè) Deferred對(duì)象的執(zhí)行狀態(tài)被改變的例子:

      var dtd = $.Deferred(); // 新建一個(gè)Deferred對(duì)象
      var wait = function(dtd){
        var tasks = function(){
          alert("執(zhí)行完畢!");
          dtd.resolve(); // 改變Deferred對(duì)象的執(zhí)行狀態(tài)
        };
        setTimeout(tasks,5000);
        return dtd;
      };
      $.when(wait(dtd))
      .done(function(){ alert("等待執(zhí)行!"); })
      .fail(function(){ alert("出錯(cuò)啦!"); });
      //代碼的尾部加了一行dtd.resolve(),這就改變了dtd對(duì)象的執(zhí)行狀態(tài),因此導(dǎo)致done()方法立刻執(zhí)行
      dtd.resolve();// 改變Deferred對(duì)象的執(zhí)行狀態(tài)

      再看一個(gè) Deferred對(duì)象返回deferred.promise()的例子:

      var wait = function(){
        var dtd = $.Deferred(); //在函數(shù)內(nèi)部,新建一個(gè)Deferred對(duì)象
        var tasks = function(){
          alert("執(zhí)行完畢!");
          dtd.resolve(); // 改變Deferred對(duì)象的執(zhí)行狀態(tài)
        };
      
        setTimeout(tasks,5000);
        return dtd.promise(); // 返回promise對(duì)象
      };
      $.when(wait())
      .done(function(){ alert("哈哈,成功了!"); })
      .fail(function(){ alert("出錯(cuò)啦!"); });

      wait()函數(shù)返回的是promise對(duì)象。dtd.promise().resolve()方法不存在,因此無(wú)法改變狀態(tài),然后,我們把回調(diào)函數(shù)綁定在這個(gè)對(duì)象上面,而不是原來(lái)的deferred對(duì)象上面。

      這樣的好處是,無(wú)法改變promise對(duì)象的執(zhí)行狀態(tài),要想改變執(zhí)行狀態(tài),只能操作原來(lái)的deferred對(duì)象。


      deferred.notifyWith()

      deferred.notifyWith() 函數(shù)用于給定上下文和參數(shù),傳遞給正在調(diào)用的延遲對(duì)象上進(jìn)行的回調(diào)函數(shù)( progressCallbacks )。

      注意:

      • 通常,只有延遲對(duì)象(Deferred)的創(chuàng)建者才能調(diào)用此方法。

      • 你可以通過(guò)調(diào)用 deferred.promise() 返回一個(gè)受限的 Promise 對(duì)象,來(lái)阻止其它代碼改變延遲對(duì)象的狀態(tài)或報(bào)告它的狀態(tài)。

      • 當(dāng) deferred.notifyWith 被調(diào)用時(shí), 任何 progressCallbacks 可以通過(guò)訪問(wèn) deferred.then 或者 deferred.progress 來(lái)添加。回調(diào) 依照他們添加時(shí)的順序執(zhí)行。

      通過(guò) .notifyWith() 傳遞參數(shù)給每個(gè)回調(diào)函數(shù),當(dāng)遲延對(duì)象已經(jīng)被 resolved 或被
      rejected 之后,再調(diào)用任何 .notifyWith() (或者添加 progressCallbacks) 都會(huì)被忽略。

      語(yǔ)法

      • deferred.notifyWith( context [, args ] )

      jQuery 1.7 新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      contextObject類型作為this對(duì)象,傳遞給進(jìn)行中的回調(diào)(progressCallbacks)
      argsArray類型傳遞一個(gè)可選的參數(shù)給進(jìn)行中的回調(diào)(progressCallbacks)

      返回值

      deferred.notifyWith() 返回的是一個(gè) Deferred 對(duì)象


      deferred.reject()

      deferred.reject() 函數(shù)用于拒絕延遲對(duì)象,并根據(jù)給定的參數(shù)調(diào)用任何 failCallbacks 回調(diào)函數(shù)。

      注意:

      • 通常只有延遲對(duì)象的創(chuàng)建者才可以調(diào)用該方法。你可以通過(guò)調(diào)用 deferred.promise(),返回一個(gè)受限的 Promise 對(duì)象,來(lái)阻止其它代碼改變延遲對(duì)象的狀態(tài)或報(bào)告它的狀態(tài)。

      • 當(dāng)延遲對(duì)象被 rejected 時(shí),任何通過(guò) deferred.then 或 deferred.fail 添加的 failCallbacks,都會(huì)被調(diào)用。回調(diào)函數(shù)按它們被添加時(shí)的順序執(zhí)行。傳遞給 deferred.reject() 的 args 參數(shù),會(huì)傳給每個(gè)回調(diào)函數(shù)。當(dāng)延遲對(duì)象進(jìn)入 rejected 狀態(tài)后,任何 failCallbacks 被添加時(shí),就會(huì)被立刻執(zhí)行,并帶上傳入給 .reject() 的參數(shù)。

      語(yǔ)法

      • deferred.reject( args )

      jQuery1.5新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      argsObject類型傳遞一個(gè)可選的參數(shù)給失敗的回調(diào)(failCallbacks)

      返回值

      deferred.reject() 返回的是一個(gè) Deferred 對(duì)象


      deferred.rejectWith()

      deferred.rejectWith() 函數(shù)用于拒絕延遲對(duì)象,并根據(jù)給定的 context 和 args 參數(shù)調(diào)用任何 failCallbacks 回調(diào)函數(shù)。

      注意:

      • 通常只有延遲對(duì)象的創(chuàng)建者才可以調(diào)用該方法。你可以通過(guò)調(diào)用 deferred.promise(),返回一個(gè)受限的 Promise 對(duì)象,來(lái)阻止其它代碼改變延遲對(duì)象的狀態(tài)或報(bào)告它的狀態(tài)。

      • 當(dāng)延遲對(duì)象被 rejected 時(shí),任何通過(guò) deferred.then 或 deferred.fail 添加的 failCallbacks,都會(huì)被調(diào)用。回調(diào)函數(shù)按它們被添加時(shí)的順序執(zhí)行。傳遞給 deferred.reject() 的 args 參數(shù), 會(huì)傳給每個(gè)回調(diào)函數(shù)。當(dāng)延遲對(duì)象進(jìn)入 rejected 狀態(tài)后,任何 failCallbacks 被添加時(shí),就會(huì)被立刻執(zhí)行,并帶上傳入給 .reject() 的參數(shù)。

      語(yǔ)法

      • deferred.rejectWith( context [, args ] )

      jQuery1.5新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      contextObject類型傳遞一個(gè)對(duì)象給失敗的回調(diào)(failCallbacks)
      argsArray類型傳遞一個(gè)可選的參數(shù)給失敗的回調(diào)(failCallbacks)

      返回值

      deferred.rejectWith() 返回的是一個(gè) Deferred 對(duì)象


      deferred.resolve()

      deferred.resolve() 函數(shù)用于解決Deferred(延遲)對(duì)象,并根據(jù)給定的args參數(shù)給完成回調(diào)函數(shù)doneCallbacks 。

      注意:

      • 通常只有延遲對(duì)象的創(chuàng)建者才可以調(diào)用該方法。你可以通過(guò)調(diào)用 deferred.promise(),返回一個(gè)受限的 Promise 對(duì)象,來(lái)阻止其它代碼改變延遲對(duì)象的狀態(tài)或報(bào)告它的狀態(tài)。

      • 當(dāng)延遲對(duì)象被 resolved 時(shí),任何通過(guò) deferred.then 或 deferred.done 添加的 doneCallbacks,都會(huì)被調(diào)用。回調(diào)函數(shù)按它們被添加時(shí)的順序執(zhí)行。傳遞給 deferred.resolve() 的 args 參數(shù), 會(huì)傳給每個(gè)回調(diào)函數(shù)。當(dāng)延遲對(duì)象進(jìn)入 resolved 狀態(tài)后,任何 doneCallbacks 被添加時(shí),就會(huì)被立刻執(zhí)行,并帶上傳入給 .resolve() 的參數(shù)。

      語(yǔ)法

      • deferred.resolve( args )

      jQuery1.5新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      argsObject類型傳遞一個(gè)可選的參數(shù)給完成回調(diào)函數(shù)(doneCallbacks)

      返回值

      deferred.resolve() 返回的是一個(gè) Deferred 對(duì)象


      deferred.resolveWith()

      deferred.resolveWith() 函數(shù)用于解決Deferred(延遲)對(duì)象,并根據(jù)給定的 context 和 args 參數(shù)給完成回調(diào)函數(shù)doneCallbacks 。

      注意:

      • 通常只有延遲對(duì)象的創(chuàng)建者才可以調(diào)用該方法。你可以通過(guò)調(diào)用 deferred.promise(),返回一個(gè)受限的 Promise 對(duì)象,來(lái)阻止其它代碼改變延遲對(duì)象的狀態(tài)或報(bào)告它的狀態(tài)。

      • 當(dāng)延遲對(duì)象被 resolved 時(shí),任何通過(guò) deferred.then 或 deferred.done 添加的 doneCallbacks,都會(huì)被調(diào)用。回調(diào)函數(shù)按它們被添加時(shí)的順序執(zhí)行。傳遞給 deferred.resolve() 的 args 參數(shù), 會(huì)傳給每個(gè)回調(diào)函數(shù)。當(dāng)延遲對(duì)象進(jìn)入 resolved 狀態(tài)后,任何 doneCallbacks 被添加時(shí),就會(huì)被立刻執(zhí)行,并帶上傳入給 .resolve() 的參數(shù)。

      語(yǔ)法

      • deferred.resolveWith( context [, args ] )

      jQuery1.5新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      contextObject類型傳遞上下文對(duì)象給完成回調(diào)函數(shù)(doneCallbacks)
      argsArray類型傳遞一個(gè)可選的參數(shù)給完成回調(diào)函數(shù)(doneCallbacks)

      返回值

      deferred.resolveWith() 返回的是一個(gè) Deferred 對(duì)象


      deferred.state()

      deferred.state() 函數(shù)用于確定一個(gè)Deferred(延遲)對(duì)象的當(dāng)前狀態(tài)。

      主要是用于調(diào)試,例如,在準(zhǔn)備拒絕(reject)一個(gè)延遲對(duì)象前,判斷它是否已經(jīng)處于 resolved 狀態(tài)。

      注意:
      deferred.state() 方法返回一個(gè)字符串,代表Deferred(延遲)對(duì)象的當(dāng)前狀態(tài)。Deferred 對(duì)象可以在三種狀態(tài)之一:

      • pending” : Deferred 對(duì)象是尚未完成狀態(tài) 。

      • resolved” : Deferred 對(duì)象是在解決狀態(tài),這意味著對(duì)象的 deferred.resolve() 或者
        deferred.resolveWith()已被調(diào)用并且 doneCallbacks 已被調(diào)用(或在被調(diào)用的過(guò)程中)

      • rejected” : Deferred 對(duì)象是在被拒絕的狀態(tài),這意味著對(duì)象的 deferred.reject() 或者
        deferred.rejectWith() 已被調(diào)用并且 failCallbacks 已被調(diào)用(或在被調(diào)用的過(guò)程中) 。

      語(yǔ)法

      • deferred.state()

      jQuery1.7 新增該函數(shù)

      返回值

      deferred.state() 返回的是一個(gè) String類型


      deferred.pipe()

      deferred.pipe() 函數(shù)用于過(guò)濾 and/or 鏈?zhǔn)窖舆t對(duì)象的工具方法。

      注意:從jQuery 1.8開(kāi)始, deferred.pipe() 方法過(guò)時(shí)。使用 deferred.then() 代替它。

      從jQuery 1.8開(kāi)始, deferred.pipe() 方法過(guò)時(shí). 應(yīng)該使用deferred.then() 代替它。

      deferred.pipe()方法返回一個(gè)新的Promise對(duì)象,用于過(guò)濾狀態(tài)或通過(guò)函數(shù)返回的延遲對(duì)象的值,傳遞給Promise對(duì)象對(duì)應(yīng)的done()、fail() 方法
      doneFilter和failFilter函數(shù)過(guò)濾原先deferred(延遲)的解決/拒絕的狀態(tài)和值。
      從 jQuery 1.7開(kāi)始,該方法還接受一個(gè)progressFilter函數(shù),用來(lái)過(guò)濾任何訪問(wèn)deferred(延遲)的notify或notifyWith 方法。

      這些過(guò)濾器可以隨著 pipe()返回的 promise 對(duì)象的 done()或fail() 回調(diào)函數(shù)的調(diào)用,返回一個(gè)新值,或返回其它可見(jiàn)對(duì)象(Deferred, Promise, 等等),這些可見(jiàn)對(duì)象傳遞了自身的解決(resolve) / 拒絕(reject)狀態(tài)和傳遞給 pipe promise 回調(diào)函數(shù)的返回的值

      如果將 null 作為過(guò)濾函數(shù),或者不指定過(guò)濾函數(shù),那么 pipe promise 被受理(resolve)或被拒絕(reject)時(shí),會(huì)使用相同的值作為原始值。

      語(yǔ)法

      • deferred.pipe( [doneFilter ] [, failFilter ] )

      jQuery1.6新增該函數(shù),1.8過(guò)時(shí)

      • deferred.pipe( [doneFilter ] [, failFilter ] [, progressFilter ] )

      jQuery1.7新增該函數(shù),1.8過(guò)時(shí)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      doneFilterFunction類型可選函數(shù),當(dāng)延遲得到解決時(shí)調(diào)用
      failFilterFunction類型可選函數(shù),當(dāng)延遲被拒絕時(shí)調(diào)用
      progressFilterFunction類型可選函數(shù),當(dāng)進(jìn)度通知發(fā)送給Deferred(延遲)被調(diào)用

      返回值

      deferred.pipe() 返回的是一個(gè) * Promise對(duì)象*

      示例&說(shuō)明

      過(guò)濾解決值:

      var defer = $.Deferred(),
         filtered = defer.pipe(function( value ) {//當(dāng)延遲對(duì)象解決時(shí)被調(diào)用
             // 傳遞給 pipe promise 回調(diào)函數(shù)的返回的值為10
              return value * 2;
          });
      defer.resolve( 5 );//延遲對(duì)象被解決  調(diào)用pipe() return 10
      filtered.done(function( value ) {//filtered 傳遞之前返回的值 10
          alert( "值是(2*5 =) 10: " + value );//彈出框輸出:值是(2*5 =) 10:10
      });

      過(guò)濾拒絕值:

      var defer = $.Deferred(),
      //延遲得到解決時(shí)調(diào)用回調(diào)函數(shù)為null
      //延遲得到拒絕的回調(diào)函數(shù)傳遞值value * 3 給Promise對(duì)象filtered 的fail的回調(diào)函數(shù)
              filtered = defer.pipe( null, function( value ) {
                  return value * 3;
              });
      
          defer.reject( 6 );//延遲對(duì)象被拒絕 調(diào)用pipe() return 18
          filtered.fail(function( value ) {
           alert( "值是(3*6=)18:" + value );//彈出框輸出:值是(3*6 =) 18:18
          });

      鏈任務(wù)(?)

      var request = $.ajax( url, { dataType: "json" } ),
          chained = request.pipe(function( data ) {
              //request返回值給url2
              return $.ajax( url2, { data: { user: data.userId } } );
          });
      
          chained.done(function( data ) {
              // 通過(guò)第一個(gè)請(qǐng)求取回data值提供給URL2
          });


      deferred.then()

      deferred.then() 函數(shù)當(dāng)Deferred(延遲)對(duì)象被解決/拒絕或仍在進(jìn)行中時(shí),調(diào)用添加處理程序。

      注意:

      • 如果沒(méi)有這種類型的回調(diào)是需要的,參數(shù)可以為 null 。或者使用.done(),.fail()或者 .progress()設(shè)置只有一種未經(jīng)過(guò)濾的狀態(tài)或值的回調(diào)類型。

      • 從jQuery 1.8開(kāi)始, 方法返回一個(gè)新的 promise ,可以通過(guò)一個(gè)函數(shù)過(guò)濾延遲對(duì)象的狀態(tài)和值,用來(lái)替換現(xiàn)在過(guò)時(shí)的deferred.pipe() 方法。

      • 回調(diào)是依照他們被添加時(shí)的順序執(zhí)行的,由于 deferred.then 返回 Promise 對(duì)象,可以鏈接其它的 Promise 對(duì)象,包括附加的 .then() 方法。

      doneFilter 和 failFilter函數(shù)過(guò)濾原延遲對(duì)象的解決/拒絕的狀態(tài)和值。
      progressFilter 函數(shù)過(guò)濾任何調(diào)用原有的延遲對(duì)象的notify 和 notifyWith的方法。
      這些過(guò)濾器函數(shù)可以返回一個(gè)新的值傳遞給的 Promise 對(duì)象的.done() 或 .fail() 回調(diào),或他們可以返回另一個(gè)觀察的對(duì)象(延遲對(duì)象,Promise 對(duì)象等)傳遞給它的解決/拒絕的狀態(tài)和值,Promise 對(duì)象的回調(diào)。
      如果過(guò)濾函數(shù)是空,或沒(méi)有指定,promise(承諾)將得到與原來(lái)值相同解決(resolved)或拒絕(rejected)。

      語(yǔ)法

      • deferred.then( doneFilter [, failFilter ] [, progressFilter ] )

        jQuery1.8新增該函數(shù)

      • deferred.then1.8-( doneCallbacks, failCallbacks)

        jQuery1.5新增該函數(shù),1.8移除

      • deferred.then1.8-( doneCallbacks, failCallbacks[, progressFilter ] )

        jQuery1.7新增該函數(shù),1.8移除

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      doneFilterFunction類型可選 當(dāng)Deferred(延遲)對(duì)象得到解決時(shí)被調(diào)用的一個(gè)函數(shù)
      failFilterFunction類型可選 當(dāng)Deferred(延遲)對(duì)象得到拒絕時(shí)被調(diào)用的一個(gè)函數(shù)
      progressFilterFunction類型可選 當(dāng)Deferred(延遲)對(duì)象生成進(jìn)度通知時(shí)被調(diào)用的一個(gè)函數(shù)調(diào)用
      doneCallbacksFunction類型當(dāng)Deferred(延遲)對(duì)象得到解決時(shí)被調(diào)用的一個(gè)函數(shù)或函數(shù)數(shù)組
      failCallbacksFunction類型當(dāng)Deferred(延遲)對(duì)象得到拒絕時(shí)被調(diào)用的一個(gè)函數(shù)或函數(shù)數(shù)組
      progressCallbacksFunction類型當(dāng)Deferred(延遲)對(duì)象生成進(jìn)度通知時(shí)被調(diào)用的一個(gè)函數(shù)或函數(shù)數(shù)組

      返回值

      deferred.then() 返回 Promise 對(duì)象

      示例&說(shuō)明

      HTML代碼:

      
      

      過(guò)濾解決值:

      var filterResolve = function() {
          var defer = $.Deferred(),
              //當(dāng)延遲對(duì)象解決時(shí)被調(diào)用
              //過(guò)濾解決值給then()的返回Promise對(duì)象的完成回調(diào)函數(shù)
              filtered = defer.then(function( value ) {
                  return value * 2;
              });
      
          defer.resolve( 5 );
      
          //添加Promise對(duì)象的完成回調(diào)函數(shù)
          filtered.done(function( value ) {
              $( "p" ).html( "值是 ( 2*5 = ) 10: " + value );
          });
      };
      $( "button" ).on( "click", filterResolve );

      過(guò)濾拒絕值:

      var defer = $.Deferred(),
      //延遲得到解決時(shí)調(diào)用回調(diào)函數(shù)為null
      //延遲得到拒絕的,回調(diào)函數(shù)過(guò)濾拒絕值 
      //傳遞過(guò)濾的拒絕值 value * 3 給then()的返回Promise對(duì)象的拒絕回調(diào)函數(shù)fail
              filtered = defer.then( null, function( value ) {
                  return value * 3;
              });
      
          defer.reject( 6 );//延遲對(duì)象被拒絕 調(diào)用then() return 18
      
          //then()的返回Promise對(duì)象添加拒絕回調(diào)函數(shù),并獲取過(guò)濾的拒絕值
          filtered.fail(function( value ) {
           alert( "值是(3*6=)18:" + value );//彈出框輸出:值是(3*6 =) 18:18
          });

      鏈任務(wù)(?)

      var request = $.ajax( url, { dataType: "json" } ),
          chained = request.then(function( data ) {
              //request返回值給url2
              return $.ajax( url2, { data: { user: data.userId } } );
          });
      
          chained.done(function( data ) {
              // 通過(guò)第一個(gè)請(qǐng)求取回data值提供給URL2
          });


      deferred.catch()

      當(dāng)Deferred對(duì)象被拒絕(reject)時(shí),調(diào)用通過(guò)deferred.catch()添加的處理程序。

      deferred.catch( fn ) 是 deferred.then( null, fn )的一個(gè)別名

      語(yǔ)法

      • deferred.catch( failCallbacks )

      jQuery 3.0 新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      failCallbacksFunction類型一個(gè)函數(shù),當(dāng) Deferred 對(duì)象被拒絕(reject)時(shí)被調(diào)用

      返回值

      deferred.catch() 返回的是一個(gè) Promise 對(duì)象

      示例&說(shuō)明

      jQuery.get 方法返回一個(gè)jqXHR對(duì)象, 它是從Deferred對(duì)象派生的,當(dāng)Deferred對(duì)象被拒絕(reject) 時(shí),我們可以使用.catch方法來(lái)處理,jQuery示例代碼:

      $.get( "test.php" )
        .then( function() {
          alert( "$.get succeeded" );
        } )
        .catch( function() {
          alert( "$.get failed!" );
        } );


      deferred.promise()

      deferred.promise() 函數(shù)返回 Deferred(延遲)的 Promise 對(duì)象。

      注意:

      • 方法允許一個(gè)異步函數(shù)阻止那些干涉其內(nèi)部請(qǐng)求的進(jìn)度(progress)或狀態(tài)(status)的其它代碼。

      • Promise 對(duì)象只包含 deferred 對(duì)象的一組方法,包括:done(),then(),fail(),isResolved(), isRejected(), always(), 這些方法只能觀察一個(gè) deferred 的狀態(tài);不包括任何用于改變狀態(tài)的延遲方法(resolve, reject, notify, resolveWith, rejectWith, 和 notifyWith),因此Promise 對(duì)象無(wú)法更改 deferred 對(duì)象的內(nèi)在狀態(tài)

      • deferred.promise()也可以接受一個(gè) target 參數(shù),此時(shí)傳入的 target 將被賦予 Promise 的方法,并作為結(jié)果返回,而不是創(chuàng)建一個(gè)新對(duì)象(這個(gè)方法可以用于在已經(jīng)存在的對(duì)象上綁定 Promise 行為的情況)。

      語(yǔ)法

      • deferred.promise( [target ] )

      jQuery 1.5 新增該函數(shù)

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      targetObject類型綁定 promise 方法的對(duì)象。

      返回值

      deferred.promise() 返回的是一個(gè) Promise 對(duì)象

      示例&說(shuō)明

      創(chuàng)建一個(gè)延遲對(duì)象,并設(shè)定兩個(gè)延時(shí)時(shí)間是隨機(jī)的定時(shí)器,分別用于受理(resolve)和拒絕(reject)延遲對(duì)象。無(wú)論哪一個(gè)先執(zhí)行,都會(huì)調(diào)用其中一個(gè)回調(diào)函數(shù)。而另一個(gè)定時(shí)器則不會(huì)產(chǎn)生任何效果,因?yàn)樵谧钕日{(diào)用的那個(gè)定時(shí)器處理中,延遲對(duì)象已經(jīng)處于完成狀態(tài)(resolved 或 rejected 狀態(tài))。同時(shí),還會(huì)設(shè)定一個(gè)定時(shí)器進(jìn)度(progress)通知函數(shù),用于進(jìn)度通知處理,并在文檔的 “body” 中顯示 “working…”,以下為一次測(cè)試時(shí)的jQuery示例代碼:

      function asyncEvent(){
              var dfd = new jQuery.Deferred();
      
              var resolveValue=400+Math.random()*2000;
              var resolveTime=Math.floor(resolveValue)
              console.log("resolveTime"+resolveTime)//resolveTime:1890ms
      
              // 在一個(gè)隨機(jī)的時(shí)間間隔之后 Resolve (解決狀態(tài))
              setTimeout(function(){
                  dfd.resolve("歡呼");
      
              }, Math.floor(resolveTime));
      
              var rejectValue=400+Math.random()*2000;
              var rejectTime=Math.floor(rejectValue)
              console.log("rejectTime"+rejectTime)//rejectTime:1364ms
      
              // 在一個(gè)隨機(jī)的時(shí)間間隔之后 reject (拒絕狀態(tài))
              setTimeout(function(){
                  dfd.reject("對(duì)不起");
              },rejectTime);
      
              // 每半秒顯示一個(gè)"working..."消息
              setTimeout(function working(){
                  //"pending" : Deferred 對(duì)象是尚未完成狀態(tài)
                  //0ms 執(zhí)行一次  500ms執(zhí)行一次 1000ms執(zhí)行一次
                  //1364ms 執(zhí)行  dfd.reject("對(duì)不起") 
                  //傳遞拒絕值"對(duì)不起" 給拒絕過(guò)濾函數(shù) alert( status+', 這次你失敗了' );
                  if ( dfd.state() === "pending" ) {
                      //向正在執(zhí)行的Deferred 對(duì)象的回調(diào)函數(shù)列表傳遞參數(shù)
                      dfd.notify("working... ");
      
                      setTimeout(working, 500);
                  }
              }, 1);
      
              // 返回 Promise 對(duì)象,調(diào)用者不能改變延遲對(duì)象
              return dfd.promise();
          }
          // 為異步函數(shù)附加一個(gè)done, fail, 和 progress 處理程序
      //如果向 jQuery.when 傳入一個(gè)延遲對(duì)象,那么會(huì)返回它的 Promise 對(duì)象(延遲方法的一個(gè)子集)
          $.when( asyncEvent() ).then(
              function(status){
                  alert( status+', 事情進(jìn)展順利' );
              },
              function(status){
                  alert( status+', 這次你失敗了' );
              },
              function(status){
                  $("body").append(status);
              }
          );

      使用目標(biāo)參數(shù),產(chǎn)生現(xiàn)有對(duì)象的Promise對(duì)象:

      // 現(xiàn)有對(duì)象
          var obj = {
              hello: function( name ) {
                  alert( "Hello " + name );
              }
          },
          // 創(chuàng)建一個(gè)延遲 Deferred
          defer = $.Deferred();
          // 設(shè)置對(duì)象作為 promise
          defer.promise( obj );
          // Resolve (解決) 該對(duì)象
          defer.resolve( "John" );
          // 使用該對(duì)象作為 Promise,向受理列表中添加回調(diào)函數(shù)
          //延遲對(duì)象狀態(tài)為解決,因此done 被調(diào)用
          obj.done(function( name ) {
              obj.hello( name ); //將彈出 "Hello John"
          }).hello( "Karl" ); // 將彈出 "Hello Karl";


      .promise()

      .promise() 函數(shù)返回一個(gè) Promise 對(duì)象,觀察某種類型被綁定到集合的所有行動(dòng),是否已被加入到隊(duì)列中。

      返回的 Promise 被鏈接到延遲對(duì)象上,保存在元素的 .data() 中。由于 .remove() 方法會(huì)移除元素上的 data,同時(shí)也會(huì)移除元素本身。所以,使用它會(huì)防止任何元素上未被受理的(unresolved) Promise 被受理(resolving)。如果有必要在元素的 Promise 被受理(resolved)之前,從 DOM 中移除該元素的話,請(qǐng)使用.detach() 來(lái)代替。之后再調(diào)用 .removeData()

      注意:

      • .promise() 方法返回一個(gè)動(dòng)態(tài)生成的 Promise,當(dāng)綁定到集合中的所有特定動(dòng)作(action)已經(jīng)被加入或未被加入到隊(duì)列中時(shí),生成的 Promise 將被受理(resolve)。

      語(yǔ)法

      • .promise( [type ] [, target ] )

      jQuery 1.5新增

      參數(shù)說(shuō)明

      參數(shù)說(shuō)明
      type可選/String類型需要待觀察隊(duì)列類型。
      target可選/PlainObject類型將要綁定 promise 方法的對(duì)象。

      默認(rèn)情況下, type的值是”fx” ,這意味著返回被受理(resolve)的 Promise 對(duì)象的時(shí)機(jī),是在所有被選中元素的動(dòng)畫(huà)都完成時(shí)發(fā)生的。

      如果提供target參數(shù),.promise()在該參數(shù)上添加方法,然后返回這個(gè)對(duì)象,而不是創(chuàng)建一個(gè)新的。它適用于在一個(gè)已經(jīng)存在的對(duì)象上添加 Promise 行為的情況。

      返回值

      .promise()方法返回一個(gè)動(dòng)態(tài)生成的 Promise對(duì)象

      示例&說(shuō)明

      1.在一個(gè)沒(méi)有激活動(dòng)畫(huà)的集合上調(diào)用 .promise()
      相關(guān)的jQuery示例代碼:

      //在一個(gè)沒(méi)有激活動(dòng)畫(huà)的集合上調(diào)用 .promise(),返回一個(gè)被受理(resolved)的 Promise
      var div = $( "" );
          div.promise().done(function( arg1 ) {
              //彈出 "true"
              alert( this === div && arg1 === div );
          });

      2.當(dāng)所有的動(dòng)畫(huà)結(jié)果時(shí)(包括那些在動(dòng)畫(huà)回調(diào)函數(shù)和之后添加的回調(diào)函數(shù)中初始化的動(dòng)畫(huà)),受理(Resolve)返回的 Promise,相關(guān)HTML代碼 :

      
      //沒(méi)有樣式不易觀察執(zhí)行效果,因此添加樣式設(shè)置
          div{
              height:100px;
              width:200px;
              border:2px solid #334455;
              margin-top:2px;
          }
      
      
      

      準(zhǔn)備...

      當(dāng)所有的動(dòng)畫(huà)結(jié)果時(shí)(包括那些在動(dòng)畫(huà)回調(diào)函數(shù)和之后添加的回調(diào)函數(shù)中初始化的動(dòng)畫(huà)),受理(Resolve)返回的 Promise,相關(guān)jQuery代碼

      $( "button" ).on( "click", function() {
              $( "p" ).append( "已開(kāi)始..." );
      
              $( "div" ).each(function( i ) {
                  $( this ).fadeIn().fadeOut( 100 * ( i + 51 ) );
              });
      
              $( "div" ).promise().done(function() {
                  $( "p" ).append( " 完成! " );
              });
          });
          //效果顯示好像是等動(dòng)畫(huà)執(zhí)行完成后才執(zhí)行done()方法

      使用 $.when() 語(yǔ)句(.promise() 方法使得在 jQuery 集合中實(shí)現(xiàn)它變成了可能),受理(Resolve)返回的 Promise

      var effect = function() {
              return $("div").fadeIn(800).delay(1200).append(" fadeOut! ").fadeOut();
          };
          $("button").bind( "click", function() {
              $("p").append( " 已開(kāi)始... ");
              $.when( effect() ).done(function() {
                  $("p").append(" 完成! ");
              });
              //效果顯示好像是等動(dòng)畫(huà)執(zhí)行完成后才執(zhí)行done()方法
          });

      到此,關(guān)于“jquery延遲對(duì)象怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


      網(wǎng)頁(yè)題目:jquery延遲對(duì)象怎么使用
      標(biāo)題路徑:http://www.ef60e0e.cn/article/gdccgp.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        政和县| 清新县| 出国| 大荔县| 曲阳县| 安岳县| 江孜县| 比如县| 新巴尔虎右旗| 师宗县| 宣化县| 林甸县| 会理县| 且末县| 彭山县| 陈巴尔虎旗| 东丰县| 浦城县| 邻水| 西宁市| 遂川县| 韩城市| 岳池县| 芷江| 黔东| 吴堡县| 兰溪市| 浦北县| 古蔺县| 周至县| 宝丰县| 绥棱县| 海丰县| 友谊县| 武清区| 宁陕县| 临城县| 政和县| 鸡西市| 裕民县| 防城港市|