極簡版,方便自己理解
class EventHub {
constructor() {
this.events = {}
}
on(eventName, func) {
if (!this.events[eventName]) {
this.events[eventName] = []
}
this.events[eventName].push(func)
}
// 應(yīng)考慮異步的場(chǎng)景,可能要判斷一下是不是異步任務(wù)??
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]
}
}