日期:2014-05-16  浏览次数:20348 次

JS自身循环到2300多次时,卡住了
JS自身循环到2300多次时,卡住了,查资料说可能是内存泄露,我不知如何解决,请教大神

$("#intodb_button").click(function(){
$(this).attr({"disabled":"disabled"});
loopin();
});

function loopin(){
var hisdbid=$("#hisdbid").text();
var nextid=$("#nextid").text();
var maxid=$("#maxid").text();
$.get("index.asp",{act:"intodb",hisdbid:hisdbid,nextid:nextid,maxid:maxid},function(data,status){
if(status=="success"){
// alert(data);
var strd = data.split("\|\|\|");
$("#disp").prepend("<li>"+data+"</li>");
if(Number(strd[0])==Number(maxid)){
$.get("index.asp",{act:"finish_indb",hisdbid:hisdbid},function(data,status){
if(status=="success"){
$("#main_page").css({"display":"block"});
alert("回写标志成功,导入数据库作业结束")
}
})
}else{
$("#nextid").html(Number(strd[0])+1);
loopin();//再次执行loopin()
}
}
})
};

------解决方案--------------------
这么大的数据量,在ie中肯定会卡的要死,google浏览器可以很流畅
------解决方案--------------------
把for循环写成window.setInterval形式试试
------解决方案--------------------
$.get("index.asp"
2个请求完全可以合并成一个请求。
act:"intodb" 成功后,服务器直接执行 "finish_indb" 再返回。
不用2个请求。

$("#hisdbid") 
页面加载时,获取dom 对象。不用每次都去获取