引入
1 在開(kāi)發(fā)的過(guò)程中,我們經(jīng)常遇到某些耗時(shí)很長(zhǎng)的javascript操作,并且伴隨著大量的異步。
2 比如我們有一個(gè)ajax的操作,這個(gè)ajax從發(fā)出請(qǐng)求到接收響應(yīng)需要5秒,在這5秒內(nèi)我們可以運(yùn)行其他代碼段,當(dāng)響應(yīng)到達(dá)后,我們需要判斷響應(yīng)的結(jié)果(無(wú)非就是成功或者失敗),并根據(jù)不同的結(jié)果 添加回調(diào)函數(shù)。
3 為了有效的簡(jiǎn)潔的添加回調(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中分離出去的