37 lines
657 B
JavaScript
37 lines
657 B
JavaScript
![]() |
/**
|
|||
|
* @name: emitter
|
|||
|
* @author: kahu4
|
|||
|
* @date: 2024-01-19 18:18
|
|||
|
* @description:事件派发、监听器
|
|||
|
* @update: 2024-01-19 18:18
|
|||
|
* */
|
|||
|
|
|||
|
class Emitter {
|
|||
|
lister = {}
|
|||
|
|
|||
|
constructor() {
|
|||
|
this.lister = {}
|
|||
|
}
|
|||
|
|
|||
|
on(name, func) {
|
|||
|
this.lister[name] ? this.lister[name].push(func) : this.lister[name] = [func];
|
|||
|
}
|
|||
|
|
|||
|
emit(name, ...args) {
|
|||
|
if (!this.lister[name]) return
|
|||
|
this.lister[name].forEach(func => func(...args))
|
|||
|
}
|
|||
|
|
|||
|
clear(name) {
|
|||
|
this.lister[name] = []
|
|||
|
}
|
|||
|
|
|||
|
clearAll() {
|
|||
|
this.lister = {}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// 只暴露一个实例全局共用
|
|||
|
export const emitter = new Emitter()
|