不傳入任何參數(shù),調(diào)用add的時(shí)候?qū)⒑瘮?shù)add到內(nèi)部的list中,調(diào)用fire的時(shí)候順序觸發(fā)list中的回調(diào)函數(shù):
function fn1(val) { console.log('fn1 says:' + val); } function fn2(val) { console.log('fn2 says ' + val); } var cbs = $.Callbacks(); cbs.add(fn1); cbs.fire('foo'); console.log('........') cbs.add(fn2); cbs.fire('bar')
結(jié)果就是按照順序疊加觸發(fā),如下列表:
fn1 says:foo ……………………… fn1 says:bar fn2 says bar
這種就是最簡(jiǎn)單的處理了,可以直接模擬,代碼如下:
function Callbacks() { var list = []; var self; self = { add: function(fn) { list.push(fn) }, fire: function(args) { list.forEach(function(fn) { fn(args); }) } } return self; }
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)