[BUG]memory leak after action finished
vinstics opened this issue · 0 comments
vinstics commented
callback or defferred should be set to null after result returned.
here's my hack, so is the iframe:
switch (data.cmd) {
case 'console':
window.console && window.console[data.method].apply(window.console, data.args);
break;
case 'deferred_reject_error':
this.deferreds[data.token].reject(data.error);
this.deferreds[data.token] = null; // avoid memory leak
break;
case 'result':
var callback = this.callbacks[data.token];
var deferred = this.deferreds[data.token];
var deferredAction = data.result && data.result.isDeferred && data.result.action;
if (deferred && deferredAction) {
deferred[deferredAction](data.result.args[0]);
this.deferreds[data.token] = null; // avoid memory leak
} else if (callback) {
callback.apply(this, data.result.args);
this.callbacks[data.token] = null; // avoid memory leak
} else if (deferred) {
// Resolve promise even if result was given
// via callback within the worker:
deferred.fulfil(data.result.args[0]);
this.deferreds[data.token] = null; // avoid memory leak
}
break;
}