JQuery的deferred物件學習總結

2022-04-04 15:08:42 字數 1542 閱讀 4233

什麼是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...