const eventHub = {
map:{}
on:(name,fn)=>{
eventHub.map[name]=eventmap[name] || []
eventHub.map[name].push(fn)
}
emit:(name,data)=>{
const q= eventHub[name]
if(!q){return}
q.map(f=>f.call(undefined,data)
return undefined
}
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.on('click',console.error)
setTimeout(()=>{
eventHub.emit(clicl','frank')
},3000)
手写发布订阅
最新推荐文章于 2024-05-28 11:44:38 发布