引入
1 在開發(fā)的過程中,我們經(jīng)常遇到某些耗時(shí)很長的javascript操作,并且伴隨著大量的異步。
2 比如我們有一個(gè)ajax的操作,這個(gè)ajax從發(fā)出請求到接收響應(yīng)需要5秒,在這5秒內(nèi)我們可以運(yùn)行其他代碼段,當(dāng)響應(yīng)到達(dá)后,我們需要判斷響應(yīng)的結(jié)果(無非就是成功或者失敗),并根據(jù)不同的結(jié)果 添加回調(diào)函數(shù)。
3 為了有效的簡潔的添加回調(diào)函數(shù)jQuery引入了Callbacks。
4 而為了方便的 根據(jù)不同的結(jié)果(或者根據(jù)各種跟結(jié)果有關(guān)的邏輯,比如不管是成功或者失敗) 添加回調(diào)函數(shù),jQuery引入了Deferred。
$.ajax("test.html") .done(function(){ alert("success"); }) .fail(function(){ alert("error"); });
5 因而Deferred與Callbacks是密不可分的,事實(shí)上,Callbacks也是從Deferred中分離出去的