From a262d10172ab88e1ba5010f29263441ca66f303b Mon Sep 17 00:00:00 2001 From: Melvin Soriano Date: Fri, 19 Jun 2020 16:15:57 +0800 Subject: [PATCH] feat: OnAsyncCallback should handle more than two parameters closes #309 --- src/internal/internal.ts | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/internal/internal.ts b/src/internal/internal.ts index c0c2bf0e..4642f72c 100644 --- a/src/internal/internal.ts +++ b/src/internal/internal.ts @@ -128,29 +128,30 @@ export function finalCallback(message) { } let asyncCallback = window.OnAsyncCallback; -window.OnAsyncCallback = function(asyncID: number, result: string) { +window.OnAsyncCallback = function(asyncID: number, ...result) { + let formattedResult; + try { + formattedResult = result.map(res => decodeURIComponent(res)); + } catch(e) { + formattedResult = result; + } + // Used by proxy to return Async calls if (Remote.remoteType === 'proxy') { let callback = _proxyCallbacks[asyncID]; if (callback instanceof Function) { - callback(decodeURIComponent(result)); + callback(...formattedResult); delete _proxyCallbacks[asyncID]; } } else { let callback = _callbacks[asyncID]; - if (callback instanceof Function) { - try { - callback(decodeURIComponent(result)); - delete _callbacks[asyncID]; - } catch(e) { - callback(result); - delete _callbacks[asyncID]; - } + callback(...formattedResult); + delete _callbacks[asyncID]; } } if(typeof asyncCallback === 'function') { - asyncCallback(asyncID, result); + asyncCallback(asyncID, ...result); } }