[Examples] Memory leak in SWG

This commit is contained in:
Henry
2017-11-30 17:39:14 -08:00
committed by Victor Woeltjen
parent ff003c3dab
commit a51b9bc63f

View File

@@ -44,9 +44,7 @@ define([
message = message.data; message = message.data;
var callback = this.callbacks[message.id]; var callback = this.callbacks[message.id];
if (callback) { if (callback) {
if (callback(message)) { callback(message);
delete this.callbacks[message.id];
}
} }
}; };
@@ -72,6 +70,7 @@ define([
deferred.resolve = resolve; deferred.resolve = resolve;
deferred.reject = reject; deferred.reject = reject;
}); });
var messageId;
function callback(message) { function callback(message) {
if (message.error) { if (message.error) {
@@ -79,33 +78,27 @@ define([
} else { } else {
deferred.resolve(message.data); 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; return promise;
}; };
WorkerInterface.prototype.subscribe = function (request, cb) { WorkerInterface.prototype.subscribe = function (request, cb) {
var isCancelled = false; function callback(message) {
var callback = function (message) {
if (isCancelled) {
return true;
}
cb(message.data); cb(message.data);
}; };
var messageId = this.dispatch('subscribe', request, callback) var messageId = this.dispatch('subscribe', request, callback);
return function () { return function () {
isCancelled = true;
this.dispatch('unsubscribe', { this.dispatch('unsubscribe', {
id: messageId id: messageId
}); });
delete this.callbacks[messageId];
}.bind(this); }.bind(this);
}; };