From b78335d24b005a1e89227f61a481326bdf72b3a2 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Tue, 7 Sep 2021 17:03:31 +0800 Subject: [PATCH] refactor: add EventBus class --- shared/utils/event-bus.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 shared/utils/event-bus.ts diff --git a/shared/utils/event-bus.ts b/shared/utils/event-bus.ts new file mode 100644 index 00000000..ceb110f4 --- /dev/null +++ b/shared/utils/event-bus.ts @@ -0,0 +1,30 @@ +/** + * 独立事件分发工具类 + * + * @example + * const event = new EventBus(); + * event.on(() => { + * console.log('trigger') + * }) + * event.fire(); + */ +export class EventBus { + listeners: ((...args: Args) => void)[] = []; + + fire(...args: Args) { + this.listeners.forEach((fn) => { + fn(...args); + }); + } + + on(fn: (...args: Args) => void) { + this.listeners.push(fn); + } + + off(fn: (...args: Args) => void) { + const index = this.listeners.indexOf(fn); + if (index >= 0) { + this.listeners.splice(index, 1); + } + } +}