jQuery 教程
向 $.Callbacks 的列表添加回調(diào)函數(shù)
$.Callbacks() 指一個(gè)多用途的回調(diào)函數(shù)列表對象,提供了一種強(qiáng)大的方法來管理回調(diào)函數(shù)列對。
提示: $.Callbacks 是在 jQuery 內(nèi)部使用,如為 .ajax,$.Deferred 等組件提供基礎(chǔ)功能的函數(shù)。它也可以用在類似功能的一些組件中,如自己開發(fā)的插件。
參數(shù) | 描述 |
---|---|
flags | 可選。 String類型 一個(gè)用空格標(biāo)記分隔的可選列表,用來改變回調(diào)列表中的行為 |
下面是使用 .remove() 從回調(diào)列表中刪除一個(gè)特定的回調(diào)的例子
這個(gè) flags 參數(shù)是 $.Callbacks() 的一個(gè)可選參數(shù), 結(jié)構(gòu)為一個(gè)用空格標(biāo)記分隔的標(biāo)志可選列表,用來改變回調(diào)列表中的行為 (比如. $.Callbacks( 'unique stopOnFalse' ))。
以下是可用的 flags:
參數(shù) | 描述 |
---|---|
once | 確保這個(gè)回調(diào)列表只執(zhí)行一次 |
memory | 緩存上一次fire時(shí)的參數(shù)值,當(dāng)add()添加回調(diào)函數(shù)時(shí),直接用上一次的參數(shù)值立刻調(diào)用新加入的回調(diào)函數(shù) |
unique | 一個(gè)回調(diào)只會被添加一次,不會重復(fù)添加 |
stopOnFalse | 某個(gè)回調(diào)函數(shù)返回false之后中斷后面的回調(diào)函數(shù) |
下面是 $.Callbacks( "once" ) 的一個(gè)例子
下面是 $.Callbacks( "memory" ) 的一個(gè)例子
下面是 $.Callbacks( "unique" ) 的一個(gè)例子
下面是 $.Callbacks( "stopOnFalse" ) 的一個(gè)例子
$.Callbacks() 支持一個(gè)列表設(shè)置多個(gè)flags(標(biāo)識)而不僅僅是一個(gè),有一個(gè)累積效應(yīng),類似"&&"。
下面是 $.Callbacks( 'unique memory' ) 的一個(gè)例子
$.Callbacks 方法也可以被分離, 例如:
pub / sub(觀察者模式)背后的一般思路是促進(jìn)應(yīng)用程序的松散耦合和高效通信。觀察家也被稱為訂閱者,它指向觀察對象。觀察者(Publisher)事件發(fā)生時(shí)通知用戶。
作為 $.Callbacks() 的創(chuàng)建組件的一個(gè)演示,只使用回調(diào)函數(shù)列表,就可以實(shí)現(xiàn) Pub/Sub 系統(tǒng)。將 $.Callbacks 作為一個(gè)文章隊(duì)列,可以向下面這樣,實(shí)現(xiàn)文章的發(fā)布和訂閱:
進(jìn)一步改進(jìn)使用 $.Deferreds,可以保證當(dāng)特定的任務(wù)被完成(或被解決)時(shí),發(fā)布者只能向訂閱者發(fā)布通知。參見下面的示例代碼: