feat: emitter
parent
071935b1bf
commit
c1c9fb8c6f
@ -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