2

当我使用 Chrome 使用简单的脚本发出一系列 XHR 请求时,例如:

var q = (function DUCK(){
    var x = new XMLHttpRequest();
    x.open('POST', '/someValidPage');
    x.onload = function(){console.log("responded!");}
    x.send();
});

//Just calling XHR a bunch of times to create the bug.
q(); q(); q(); q(); q(); q(); q(); q(); q(); q(); q();
q(); q(); q(); q(); q(); q(); q(); q(); q(); q(); q();

x.onload在进行所有q()调用之后,浏览器会立即构建一系列 22 个附加事件处理程序 ( )。这是意料之中的,但是响应已经下降并且对象不再被使用,XHR 对象保留在内存中,直到浏览器的垃圾收集器来清理它,它会删除所有额外的处理程序。

当我完成对象时,我想删除对象和事件......诸如 x.removeEventHandler('load') 之类的东西没有显示结果,并且不适用于 IE8(这也令人沮丧)。

如何正确分离事件并从内存中删除对象?

4

0 回答 0