const eventHub = {
// 任务队列
map: {},
// 入队
on:(name, fn)=>{
eventHub.map[name] = eventHub.map[name] || []
eventHub.map[name].push(fn)
},
// 或者称为trigger,出发队列中事件
emit: (name, data)=>{
const q = eventHub.map[name]
if(!q){return}
q.map(fn =>fn.call(undefined, data))
},
// 出队
off: (name, fn)=>{
const q = eventHub.map[name]
if(!q){return}
const index = q.indexOf(fn)
if(index < 0){return}
q.splice(index, 1)
}
}
// 监听事件,把事件放到任务队列里面
eventHub.on('click', console.log)
// 取消事件
eventHub.off('click', console.log)
// 触发事件
setTimeout(()=>{
eventHub.emit('click', 'pank')
},3000)