[英]Browser memory leak while sending socket requests
我尝试在服务器上发送websocket请求(socket.io)。 请求是从浏览器控制台发送的。 但是在浏览器中使用脚本时出现内存泄漏。 您是否可以帮助避免内存泄漏,但可以节省脚本效率? 码:
var socket = new io;
var counter = 251;
function myNewFunction(data){
try{
var IDs = {"items": []};
var arrayLength = data.items.length;
var lables = [];
for (var i = 0; i < arrayLength; i ++){
if(data.items[i]["amount"] < 20){
IDs["items"].push(data.items[i]["_id"]);
lables.push(data.items[i]["amount"]);
}}}catch(err){}
if (IDs["items"].length > 0){
var xhr = new XMLHttpRequest();
xhr.open("POST", "url", false);
xhr.setRequestHeader("content-type", "application/json;charset=UTF-8");
xhr.send(JSON.stringify(IDs));
if (xhr.status == 200){
for(var i = 0; i < lables.length; i ++){
counter -= lables[i];}
console.log("Left", counter);
}}
}
setInterval(function(){
socket.emit("/call/items", {page: 1, sort: 1, search: "", tags: ["1", "2", "3", "4"]}, function(e, data){myNewFunction(data)})
}, 100)
应该是这样的:
var socket = new io;
var counter = 251;
function myNewFunction(data) {
try {
var IDs = {"items": []};
var arrayLength = data.items.length;
var lables = [];
for (var i = 0; i < arrayLength; i ++) {
if(data.items[i]["amount"] < 20) {
IDs["items"].push(data.items[i]["_id"]);
lables.push(data.items[i]["amount"]);
}
}
if (IDs["items"].length > 0) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "url", false);
xhr.setRequestHeader("content-type", "application/json;charset=UTF-8");
xhr.send(JSON.stringify(IDs));
xhr.onreadystatechange = function () {
if (xhr.status == 200){
for(var i = 0; i < lables.length; i ++){
counter -= lables[i];}
setTimeout(callItems, 100);
}
}
} else {
setTimeout(callItems, 100);
}
} catch(err) {
setTimeout(callItems, 100);
}
}
function callItems() {
socket.emit(
"/call/items",
{page: 1, sort: 1, search: "", tags: ["1", "2", "3", "4"]},
function (e, data) {
myNewFunction(data)
}
);
}
callItems();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.