发布订阅
const eventHub = {
map: {
},
on: (name,fn) => {
eventHub.map[name] = eventHub.map[name] || []
eventHub.map[name].push(fn)
},
emit: (name, data) => {
const q =eventHub.map[name]
if(!q) return
q.map(f => f.call(null, data))
return undefined
},
off: (name, fu) => {
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.on('click', console.error)
setTimeout(() => {
eventHub.emit('click','hi')
},3000)