From c1d925452a560e7e0bcfc15cba9a4dc415392cd4 Mon Sep 17 00:00:00 2001 From: tone <3341154833@qq.com> Date: Wed, 15 Oct 2025 12:35:52 +0800 Subject: [PATCH] feat(event-emitter): optimize implementation --- src/utils/EventEmitter.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) 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; }