什麼是deferred?
可以幫助我們按規定的順序執行函式,比如說我們ajax請求資料之後,對dom進行資料填充,那我們就要先執行完ajax,拿到資料之後才能進行dom資料填充,所以這就是乙個順序執行的過程,傳統的做法是事先定義好**函式,當檢測到資料請求完成時,執行事先定義的**函式。但是,在**函式方面,jquery的功能非常弱。為了改變這一點,jquery開發團隊就設計了deferred物件。幫助我們更好的控制函式執行順序。
1.5版本後的jquery使用$.ajax()返回的是deferred物件
deferred常見用法:
1.鏈式呼叫
$.ajax("test.html").done(
function())
.fail(
function());
當請求完成,執行done方法;當請求失敗,執行fail方法。
2.指定同一操作的多個**函式
deferred物件的一大好處,就是它允許你自由新增多個**函式。而如果使用傳統的**函式,那麼我們只能定義乙個success方法。
$.ajax("test.html").done(
function() )
.fail(
function() )
.done(
function() );
可以看到,我們呼叫了兩個done方法,當請求成功時,會按他們呼叫的順序來先後執行兩個done方法。
3.為多個操作指定**函式
deferred物件的另一大好處,就是它允許你為多個事件指定乙個**函式,這是傳統寫法做不到的。
$.when($.ajax("test1.html"), $.ajax("test2.html")).done(
function())
.fail(
function());
可以看到,使用when方法,我們可以實現當兩個ajax都成功時才執行done方法。
4.deferred物件不僅適用於ajax,任何本地操作你都可以使用deffer物件來控制你的方法執行順序。
var wait = function(dtd) ;
settimeout(tasks, 3000);
return
dtd;
};$.when(wait())
.done(
function
(info) )
.fail()
.always(
function
(info) );
總結:deferred物件是jquery團隊設計開發的乙個物件,可以幫助我們實現函式按順序呼叫。ajax使用deferred物件只是其中的一種用途,任何其他本地操作都能使用deferred物件。
jquery的deferred使用詳解
原文 hhtps 1.什麼是deferred物件 deferred物件是乙個延遲物件,意思是函式延遲到某個點才開始執行,改變執行狀態的方法有兩個 成功 resolve和失敗 reject 分別對應兩種執行 成功 函式 done和失敗 函式fail 2.deferred物件使用示例 ajax方式其實是...
jQuery的deferred物件狀態還原
jquery的deferred物件的使用可以參考阮一峰的jquery的deferred物件詳解 js模組化開發時用到requirejs載入js,有兩個模組a和b,require a require b b依賴a,b中要使用a中非同步從後台載入的資料,想到了jquery的deferred物件,a中返回...
JS執行順序 (deferred 延遲佇列)
出現問題 函式功能 訪問資料庫函式 判斷資料是否為空 如果為空,則執行alert語句 後面省略 此執行結果為a b,原因是訪問資料庫比較慢,其他部分先執行。解決方法 var dtd deferred var wait function dtd settimeout tasks,0 return dt...