// 正常寫法
/*function A(list, cb) {
setTimeout(function() {
var task = list.shift();
task(); //執(zhí)行函數(shù)
if (list.length > 0) {
setTimeout(arguments.callee, 100); // 遞歸分解
} else {
cb();
}
}, 30);
}
A([function() {
console.log('first');
}, function() {
console.log('second');
}], function() {
console.log('callback');
});*/
let cb = $.Callbacks('once');
// once的使用是使隊(duì)列只執(zhí)行一次
// add參數(shù)可以是函數(shù)或函數(shù)數(shù)組
cb.add([function() {
console.log('a');
}, function() {
console.log('b');
}]);
cb.fire(); // 執(zhí)行了once矫夯,后面的就不再觸發(fā)
/*
這是在fire的時(shí)候執(zhí)行了,self.disable
disable: function() {
list = stack = memory = undefined;
return this;
}
*/
cb.add(function(){alert(1)});
cb.fire();
// demo
function fn1(val) {
console.log(val);
}
function fn2() {
console.log('say hi ');
return false;
}
function test() {
console.log('雙擊屏幕植兰,666');
}
let callbacks = $.Callbacks('memory');
callbacks.add(fn1);
callbacks.fire('你好');
callbacks.add(test);
callbacks.add(function(){console.log('一枝梅')})
callbacks.add(fn2); // memory 即使在沒(méi)有fire的情況玻蝌,后添加到列表中的函數(shù)也能執(zhí)行
/*
就是fn2這個(gè)函數(shù)會(huì)存儲(chǔ)在memory變量中蟹肘,然后再統(tǒng)一執(zhí)行這時(shí)memory是這樣的[fn1, test, 匿名函數(shù), fn2]
*/
let cbs = $.Callbacks('unique'); // 相同函數(shù)词疼,防止重復(fù)添加
cbs.add(test);
cbs.add(fn2);
cbs.add(test);
cbs.fire();
/*
if ( !options.unique || !self.has(arg)) { // 確保是否可以重復(fù)
list.push(arg);
}
*/
let calls = $.Callbacks('memory stopOnFalse'); // stopOnFalse 遇到函數(shù)里return false了,之后的列表就不再添加
calls.add(test);
calls.add(fn2);
calls.fire();
calls.add(function(){console.log('春江水')});
// 常規(guī)的發(fā)布訂閱
let Observe = {
callbacks: [],
add: function(fn) {
this.callbacks.push(fn)
},
fire: function() {
this.callbacks.forEach(fn => fn());
}
};
// Observe.add(function(){console.log('Jocker')});
// Observe.add(function() { console.log('mover like this')})
// Observe.fire()
回調(diào)對(duì)象 $.Callbacks()
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門筒愚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赴蝇,“玉大人,你說(shuō)我怎么就攤上這事巢掺【淞妫” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵址遇,是天一觀的道長(zhǎng)熄阻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)倔约,這世上最難降的妖魔是什么秃殉? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮浸剩,結(jié)果婚禮上钾军,老公的妹妹穿的比我還像新娘。我一直安慰自己绢要,他們只是感情好吏恭,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著重罪,像睡著了一般樱哼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剿配,一...
- 那天搅幅,我揣著相機(jī)與錄音,去河邊找鬼呼胚。 笑死茄唐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蝇更。 我是一名探鬼主播沪编,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼呼盆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蚁廓?” 一聲冷哼從身側(cè)響起访圃,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎相嵌,沒(méi)想到半個(gè)月后挽荠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡平绩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了漠另。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捏雌。...
- 正文 年R本政府宣布肤频,位于F島的核電站,受9級(jí)特大地震影響算墨,放射性物質(zhì)發(fā)生泄漏宵荒。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一净嘀、第九天 我趴在偏房一處隱蔽的房頂上張望报咳。 院中可真熱鬧,春花似錦挖藏、人聲如沸暑刃。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)岩臣。三九已至,卻和暖如春宵膨,著一層夾襖步出監(jiān)牢的瞬間架谎,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓鸿脓,卻偏偏與公主長(zhǎng)得像抑钟,于是被迫代替她去往敵國(guó)和親涯曲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 為什么Node約定,回調(diào)函數(shù)的第一個(gè)參數(shù)蛔溃,必須是錯(cuò)誤對(duì)象err(如果沒(méi)有發(fā)生錯(cuò)誤绰沥,該參數(shù)就是null)?原因是一個(gè)...
- 關(guān)鍵詞:回調(diào)對(duì)象 語(yǔ)法:var call = $.Callbacks('once','memory','uniqu...
- 前言 此教程的目的是教會(huì)大家如何使用AIDL,包括定義AIDL服務(wù)麸塞、調(diào)用AIDL服務(wù)秃臣、傳遞復(fù)雜對(duì)象、AIDL回調(diào)客...
- 今天來(lái)講講 Jquery 中的回調(diào)對(duì)象這個(gè)知識(shí)點(diǎn) (1) jQuery.Callbacks( flags )描述:...
- jQuery ajax 實(shí)例講解 [$.get() 定義和用法]get()方法通過(guò)遠(yuǎn)程HTTP GET請(qǐng)求載入信息...