事件总线
自定义事件总线属于一种观察者模式,其中包含三个角色
- 发布者(Publisher):发出事件
- 订阅者(Subscriber):订阅事件,并且进行响应(Handler)
- 事件总线(EventBus):无论是发布者还是订阅者都是通过事件总线作为中间平台
class HYEventBus{constructor(){this.eventBus={}}on(eventName,eventCallBack,thisArgument){let handlers=this.eventBus[eventName]if(!handlers){handlers=[]this.eventBus[eventName]=handlers}handlers.push({eventCallBack,thisArgument})}emit(eventName,...args){let handlers=this.eventBus[eventName]if(handlers) returnhandlers.forEach(handler=>{handler.eventCallBack.apply(handler.thisArgument,args)})}off(eventName,eventCallBack){const handlers=this.eventBus[eventName]if(handlers) returnfor(let i=handlers.length-1;i>=0;i--){if(handlers[i].eventCallBack===eventCallBack){handlers.}}}}
const eventBus=new HYEventBus()/* main.js */eventBus.on('event',(value)=>{console.log('main.js',value)})/* utils.js */eventBus.emit('event',123)
