jQuery的Callbacks機(jī)制

2018-07-24 10:49 更新

講了 Deferred ,現(xiàn)在再來看 Callbacks ,這才是本源。事實(shí)上, Deferred 機(jī)制,只是在 Callbacks 機(jī)制的上層進(jìn)行了一層簡(jiǎn)單封裝而且。 Callbacks 對(duì)象,才是真正的 jQuery 中定義的原始的回調(diào)管理機(jī)制。

var obj = $.Callbacks();
obj.add(function(){console.log('1')});
obj.add(function(){console.log('2')});
obj.fire();

Callbacks 對(duì)象的初始化支持一組控制參數(shù):

$.Callbacks( flags )
初始化一個(gè)回調(diào)管理對(duì)象。 flags 是空格分割的多個(gè)字符串,以定義此回調(diào)對(duì)象的行為:
  • once 回調(diào)鏈只能被激發(fā)一次
  • memory 回調(diào)鏈被激發(fā)后,新添加的函數(shù)被立即執(zhí)行
  • unique 相同的回調(diào)函數(shù)只能被添加一次
  • stopOnFalse 當(dāng)有回調(diào)函數(shù)返回 false 時(shí)終止調(diào)用鏈的執(zhí)行

Callbacks 的控制方法:

callbacks.add()
添加一個(gè)或一串回調(diào)函數(shù)
callbacks.fire()
激發(fā)回調(diào)
callbacks.remove()
從調(diào)用鏈中移除指定的函數(shù)
callbacks.empty()
清空調(diào)用鏈
callbacks.disable()
關(guān)閉調(diào)用鏈的繼續(xù)執(zhí)行,新添加的函數(shù)也不會(huì)被執(zhí)行
callbacks.lock()
鎖定調(diào)用鏈,但是如果打開了 memory 的 flag ,新添加的函數(shù)仍然會(huì)執(zhí)行
callbacks.has()
檢查一個(gè)函數(shù)是否處于回調(diào)鏈之中
callbacks.fired()
檢查調(diào)用鏈?zhǔn)欠褚呀?jīng)被激發(fā)
callbacks.locked()
檢查調(diào)用鏈?zhǔn)欠癖绘i定


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)