Compare commits
1 Commits
main
...
dev/emitte
Author | SHA1 | Date |
---|---|---|
|
c1c9fb8c6f | 7 months ago |
@ -0,0 +1,33 @@
|
||||
/**
|
||||
* 或者使用tiny-emitter实现
|
||||
*/
|
||||
const eventNames = ['API:UN_AUTH', 'API:INVALID', 'FAILD']
|
||||
|
||||
class EventEmitter {
|
||||
constructor() {}
|
||||
listeners = {
|
||||
'API:UN_AUTH': new Set(),
|
||||
'API:INVALID': new Set(),
|
||||
'FAILED': new Set(),
|
||||
}
|
||||
|
||||
on(eventName, listener) {
|
||||
this.listeners[eventName].add(listener)
|
||||
}
|
||||
|
||||
emit(eventName, ...args) {
|
||||
this.listeners[eventName].forEach((listener) => listener(...args))
|
||||
}
|
||||
once(eventName, listener) {
|
||||
const onceListener = (...args) => {
|
||||
listener(...args)
|
||||
this.off(eventName, onceListener)
|
||||
}
|
||||
this.on(eventName, onceListener)
|
||||
}
|
||||
off(eventName, listener) {
|
||||
this.listeners[eventName].delete(listener)
|
||||
}
|
||||
}
|
||||
|
||||
export default new EventEmitter()
|
Loading…
Reference in New Issue