From a47449e7cb966d62a63d8f3b452781acf3ed336e Mon Sep 17 00:00:00 2001 From: Pavel Torbeev <32488372+pavel-trbv@users.noreply.github.com> Date: Wed, 18 Dec 2019 22:48:40 +0500 Subject: [PATCH] Added: on/register return functions off/unregister You can use: const off = rpc.on('event', handler); // do any actions off(); Similarly: const unregister = rpc.register('event', handler); //do any actions unregister(); --- src/index.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index e9e6c7d..41bfbeb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -143,11 +143,14 @@ function callProcedure(name: string, args: any, info: ProcedureListenerInfo): Pr * Register a procedure. * @param {string} name - The name of the procedure. * @param {function} cb - The procedure's callback. The return value will be sent back to the caller. + * @returns {Function} The function, which unregister the event. */ -export function register(name: string, cb: ProcedureListener): void { +export function register(name: string, cb: ProcedureListener): Function { if(arguments.length !== 2) throw 'register expects 2 arguments: "name" and "cb"'; if(environment === "cef") glob[IDENTIFIER].then((id: string) => mp.trigger(BROWSER_REGISTER, JSON.stringify([id, name]))); glob.__rpcListeners[name] = cb; + + return () => unregister(name); } /** @@ -418,13 +421,16 @@ function callEvent(name: string, args: any, info: ProcedureListenerInfo){ * Register an event handler. * @param {string} name - The name of the event. * @param cb - The callback for the event. + * @returns {Function} The function, which off the event. */ -export function on(name: string, cb: ProcedureListener){ +export function on(name: string, cb: ProcedureListener): Function { if(arguments.length !== 2) throw 'on expects 2 arguments: "name" and "cb"'; const listeners = glob.__rpcEvListeners[name] || new Set(); listeners.add(cb); glob.__rpcEvListeners[name] = listeners; + + return () => off(name, cb); } /**