[Examples] Memory leak in SWG
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user