setTimeout内存溢出

yernher 2010-03-04 10:18:22
			var gg = false;
var check = false;
function send_request(url){
if(window.XMLHttpRequest){
gg = new XMLHttpRequest();
}
else if(window.ActiveXObject){
try{
gg = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
gg = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
if(!gg){
window.alert("不能创建");
}
gg.onreadystatechange=processRequest;
gg.open("POST",url,true);
gg.send(null);
}
function processRequest(){
if(gg.readyState == 4){
if(gg.status == 200){
document.getElementById("label1").value=gg.responseText;
}
}
}

function update(){
var user = form1.user.value;
if(user==""){
form1.user.focus();
}
else{
var url = "jsp.jsp?user="+user;
url = encodeURI(url);
url = encodeURI(url);
send_request(url);
}
form1.user.value="";
form1.user.focus();
}
function chat(){
var user =1;
var url = "jsp.jsp?user=1";
send_request(url);
setInterval("chat()",2000);

}
window.onload=chat();
...全文
181 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
myhope88 2010-07-19
  • 打赏
  • 举报
回复
高手真多,帮顶下
cheng20100915 2010-07-19
  • 打赏
  • 举报
回复
setInterval("chat()",2000);改为 setTimeout("chat()",2000);
ZZBzengzhenbin 2010-07-19
  • 打赏
  • 举报
回复
那要怎么解决呢?
fengye_nothing 2010-03-05
  • 打赏
  • 举报
回复
你用的是setInterval("chat()",2000);
首先你了解setInterval和setTimeout的区别:
setInterval(表达式,时间):页面载入后,每经过指定毫秒值后执行指定表达式,是间隔多次执行的
setTimeout(表达式,时间):页面载入后,经过指定毫秒值后执行指定表达式,只执行一次
看了这个你知道你为什么会内存溢出了吧,最好是用setTimeout,用完后最好是还要关掉setInterval对应的是clearInterval,setTimeout对应的是clearTimeout
goosman 2010-03-05
  • 打赏
  • 举报
回复
function chat(){
var user =1;
var url = "jsp.jsp?user=1";
send_request(url);
setInterval("chat()",2000);

}
window.onload=chat();
问题产生在这里
1: 页面加载后调用chat一次.
2: chat方法中设置了每隔2秒调用一次chat
3: 在每隔2秒调用的chat中又重复了2
所以, 会有内存溢出, 因为这里经过多次chat调用之后, 会形成n多独立的每隔2秒调用chat
也就是说
第一个2秒调用了1个chat
第二个2秒调用了2个chat
第三个2秒调用了4个chat
第四个2秒调用了8个chat
...
第一百个2秒调用了2^99个chat
所以, 很多就over了
JCaliven 2010-03-05
  • 打赏
  • 举报
回复
应该是setTimeoue('chat()',2000);

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧