From a51b9bc63f738e04cb877626371b07bd6b924a27 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 30 Nov 2017 17:39:14 -0800 Subject: [PATCH] [Examples] Memory leak in SWG --- example/generator/WorkerInterface.js | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/example/generator/WorkerInterface.js b/example/generator/WorkerInterface.js index bc4b2e58cb..ebf2688868 100644 --- a/example/generator/WorkerInterface.js +++ b/example/generator/WorkerInterface.js @@ -44,9 +44,7 @@ define([ message = message.data; var callback = this.callbacks[message.id]; if (callback) { - if (callback(message)) { - delete this.callbacks[message.id]; - } + callback(message); } }; @@ -72,6 +70,7 @@ define([ deferred.resolve = resolve; deferred.reject = reject; }); + var messageId; function callback(message) { if (message.error) { @@ -79,33 +78,27 @@ define([ } else { deferred.resolve(message.data); } - return true; + delete this.callbacks[messageId]; } - this.dispatch('request', request, callback); + messageId = this.dispatch('request', request, callback.bind(this)); return promise; }; WorkerInterface.prototype.subscribe = function (request, cb) { - var isCancelled = false; - - var callback = function (message) { - if (isCancelled) { - return true; - } + function callback(message) { cb(message.data); }; - var messageId = this.dispatch('subscribe', request, callback) + var messageId = this.dispatch('subscribe', request, callback); return function () { - isCancelled = true; this.dispatch('unsubscribe', { id: messageId }); + delete this.callbacks[messageId]; }.bind(this); - };