deferred對象的方法

  1. $.Deferred() 生成一個deferred對象。
  2. deferred.done(function(){}) 指定操做成功時的回調函數
  3. deferred.fail(function(){}) 指定操做失敗時的回調函數
  4. deferred.promise()
    沒有參數時,返回一個新的deferred對象,該對象的運行狀態沒法被改變;
    接受參數時,做用爲在參數對象上部署deferred接口。
  5. deferred.resolve() 手動改變deferred對象的運行狀態爲」已完成」,從而當即觸發done()方法。
  6. deferred.reject() 手動改變deferred對象的運行狀態變爲」已失敗」,從而當即觸發fail()方法。
  7. $.when() 爲多個操做指定回調函數。
  8. deferred.then() 有時爲了省事,能夠把done()和fail()合在一塊兒寫,這就是then()方法。
$.when($.ajax("/main.php" )) .then(successFunc, failureFunc );

若是then()有兩個參數,那麼第一個參數是done()方法的回調函數,第二個參數是fail()方法的回調方法。若是then()只有一個參數,那麼等同於done()。
9. deferred.always()這個方法也是用來指定回調函數的,它的做用是,無論調用的是deferred.resolve()仍是deferred.reject(),最後老是執行。php

 

jQuery規定deferred對象的三種執行狀態:未完成、已完成和已失敗。
var deferred = new $.Deferred(); //新建一個Deferred對象
若是執行狀態是」已完成」(resolved),deferred對象馬上調用done()方法指定的回調函數;
若是執行狀態是」已失敗」,調用fail()方法指定的回調函數;
若是執行狀態是」未完成」,則繼續等待,或者調用progress()方法指定的回調函數(jQuery1.7版本添加)。
其做用:在原來的deferred對象上返回Promise對象,後者只開放與改變執行狀態無關的方法(好比done()方法和fail()方法),
屏蔽與改變執行狀態有關的方法(好比resolve()方法和reject()方法),從而使得執行狀態不能被改變。
ajax

相關文章
相關標籤/搜索