极简版,方便自己理解
class EventHub {
constructor() {
this.events = {}
}
on(eventName, func) {
if (!this.events[eventName]) {
this.events[eventName] = []
}
this.events[eventName].push(func)
}
// 应考虑异步的场景,可能要判断一下是不是异步任务??
emit(eventName, params) {
let funcList = this.events[eventName]
if (Array.isArray(funcList) && funcList.length > 0) {
funcList.map((func) => {
func(params)
})
}
}
off(eventName) {
delete this.events[eventName]
}
}