我想检查许多项目与Ajax网址上的信息。但是,当我在浏览器中运行此功能时,内存使用率高于2个演出,然后浏览器崩溃(Chrome,Firefox)。我究竟做错了什么? items变量真的很大 - > 200 000,还包含一些大字符串。XMLHttpRequest循环内存泄漏
var items = [1,2,3,4,5,6,7,8,9,10,...,300000]
var activeItems = {}
function loopAjax(){
for (i=0; i < items.length; i++) {
var currItem = items[i];
var request = new XMLHttpRequest();
var found = 0
request.open("GET", "/item=" + currItem);
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var response = JSON.parse(request.responseText);
var active = response[0].active;
if (active) {
console.log("FOUND ACTIVE! " + currItem);
activeItems[found] = {"active": true, "item": currItem};
found++;
}
}
}
request.send();
}
}
... 300000是问题所在。你需要重新设计你如何解决这个问题 – robbmj
这是一个可怕的设计。想想你在做什么。向服务器发出200,000个请求!?您没有任何延迟,因此您只需强制浏览器排队呼叫。没有休息。服务器应处理呼叫中的多个项目。不只是一个。您需要查看您的结尾电话排队。 – epascarello
Woah,对服务器的请求太多了。为什么这么多要求? –