From 5f2ccef47bb1d8656433b529573212273b82bf83 Mon Sep 17 00:00:00 2001 From: sealice <15445553+sealice@users.noreply.github.com> Date: Mon, 4 Jan 2021 10:02:11 +0800 Subject: Add new features of emitter.off. Fixes #123 If emitter.off provides only the event, remove all listeners for that event. --- src/index.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index ae85607..394a5ed 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,7 +18,7 @@ export interface Emitter { on(type: EventType, handler: Handler): void; on(type: '*', handler: WildcardHandler): void; - off(type: EventType, handler: Handler): void; + off(type: EventType, handler?: Handler): void; off(type: '*', handler: WildcardHandler): void; emit(type: EventType, event?: T): void; @@ -60,10 +60,14 @@ export default function mitt(all?: EventHandlerMap): Emitter { * @param {Function} handler Handler function to remove * @memberOf mitt */ - off(type: EventType, handler: Handler) { + off(type: EventType, handler?: Handler) { const handlers = all.get(type); if (handlers) { + if(handler){ handlers.splice(handlers.indexOf(handler) >>> 0, 1); + } else { + all.delete(type); + } } }, -- cgit v1.2.3