jquery的deferred物件的使用可以參考阮一峰的jquery的deferred物件詳解
js模組化開發時用到requirejs載入js,有兩個模組a和b,require(a),require(b),b依賴a,b中要使用a中非同步從後台載入的資料,想到了jquery的deferred物件,a中返回乙個deferred物件defer,等到a中載入完後defer.resolve(data),b中defer.done(function(data){})
requirejs(['jquery'],function($));
})
a.js
define(['jquery'],function($)
})return
defer
})
b.js
define(['jquery','a'],function($,defer) )
})
這樣之後,第一次載入沒問題。會載入a.js,b.js 但是查詢的時候不會載入a.js,b.js,a中的ajax會執行,但是b中defer物件的狀態已改變,獲取不到a中的資料,因此修改為如下
a.js
define(['jquery'],function($)
})return
function
(g)
else
}})
b.js
define(['jquery','a'],function($,defer) )
})
b中每次用完給乙個新的物件,讓a中的defer指向新物件,巧妙改變defer狀態。
jquery的deferred使用詳解
原文 hhtps 1.什麼是deferred物件 deferred物件是乙個延遲物件,意思是函式延遲到某個點才開始執行,改變執行狀態的方法有兩個 成功 resolve和失敗 reject 分別對應兩種執行 成功 函式 done和失敗 函式fail 2.deferred物件使用示例 ajax方式其實是...
JQuery的deferred物件學習總結
什麼是deferred?可以幫助我們按規定的順序執行函式,比如說我們ajax請求資料之後,對dom進行資料填充,那我們就要先執行完ajax,拿到資料之後才能進行dom資料填充,所以這就是乙個順序執行的過程,傳統的做法是事先定義好 函式,當檢測到資料請求完成時,執行事先定義的 函式。但是,在 函式方面...
JS執行順序 (deferred 延遲佇列)
出現問題 函式功能 訪問資料庫函式 判斷資料是否為空 如果為空,則執行alert語句 後面省略 此執行結果為a b,原因是訪問資料庫比較慢,其他部分先執行。解決方法 var dtd deferred var wait function dtd settimeout tasks,0 return dt...