gpt4 book ai didi

javascript - XMLHttp POST 请求的巨大内存泄漏

转载 作者:数据小太阳 更新时间:2023-10-29 06:10:16 26 4
gpt4 key购买 nike

如何避免 XHR POST 内存泄漏?我浏览了很多关于 XHR 内存泄漏的网页,但没有好的解决方案。我的问题和 this 的博客差不多,有说明问题但没有解决方案。

我的问题:我有一个网络应用程序,它不断向服务器发送日期(2Mb 到 80Mb),它会发出 10 到 300 个请求。它是 POST 请求。对于 GET 请求没有这样的大问题。

我该如何解决这个问题?循环引用、范围、更接近等我尝试但没有成功。我尝试使用 delete 关键字来更改 readystate,删除以前的 xhr 对象,尝试重用 xhr,对 null 的 xhr 引用,更改编码模式等

这是示例代码。这是我需要的功能

 var base_string =  "ABCDEFGHIJKLMNOPQUST01234567890!@#$%^&:ABCDEFGHIJKLMNOPQUST01234567890!@#$%^&ABCDEFGHIJKLMNOPQUST01234567890!@#$%^&";
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
base_string += base_string;
this.sampleData = base_string;
var dataToSend = this.sampleData.substring( 0, 2000000 );



this.xhr = [];
this.xhr[0] = new XMLHttpRequest();
function sendRequest (){
var Self = this;
Self.xhr[0].onload = function (test) {
sendRequest ();
};

Self.xhr[0].open("POST", "http://localhost/upload.php" + "?n=" + Math.random(), true);
Self.xhr[0].send(dataToSend);
}
sendRequest ();

如何在没有内存泄漏的情况下完成此操作?

最佳答案

清理你的代码 - 这应该做同样的事情而不奇怪和毫无意义地使用 Self 和数组......它还会重新初始化 xhr

我已经更改为向上传加载事件添加一个监听器 - 这里的快速测试似乎没有泄漏(似乎)

// snip
this.sampleData = base_string;
var dataToSend = this.sampleData.substring( 0, 2000000 );

function sendRequest (){
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('load', function (e) {
sendRequest ();
});

xhr.open("POST", "http://localhost/upload.php" + "?n=" + Math.random(), true);
xhr.send(dataToSend);
}
sendRequest ();

关于javascript - XMLHttp POST 请求的巨大内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39285158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com