[英]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.