diff --git a/src/utils/EventEmitter.ts b/src/utils/EventEmitter.ts index a899ed0..acce398 100644 --- a/src/utils/EventEmitter.ts +++ b/src/utils/EventEmitter.ts @@ -19,24 +19,22 @@ export class BaseEventEmitter { listener: (args: T[K]) => void, once?: boolean }) { + const self = this; if (!this.events.has(event)) { this.events.set(event, new Set()); } - const fn = args.once ? (data: T[K]) => { + const fn = args.once ? function onceHandler(data: T[K]) { listener(data); - this.off(event, fn); + self.off(event, onceHandler); } : listener; this.events.get(event)!.add(fn); + return this; } public off(event: K, listener: (args: T[K]) => void) { - if (!this.events.has(event)) { - return; - } - - this.events.get(event)!.delete(listener); + this.events.get(event)?.delete(listener); return this; }