JavaScript 定时任务多事件冲突问题
var iCount = setInterval(ChangeTime, 3500);//3.5秒请求一次函数
function ChangeTime() {
$.ajax({
type: "POST",
url: "/Home/Index/is_ajax_no",
success: function(msg){
if(msg == 1){
clearInterval(iCount); //停止刷新事件,防止出现页面跳转过慢,请求多次
location.href = '/Home/Index/reg_result_no_card';
return false;
}
}
});
}
//注:
最好不要使用setInterval,而用setTimeout的延时递归来代替interval。setInterval会产生回调堆积,容易造成浏览器崩溃。
如果一个页面有两个setInterval,还会造成冲突
使用下面的方法
ChangeTime()
var iCount ; //声明全局,如果有多个定时任务,可以声明多个
function ChangeTime() {
$.ajax({
type: "POST",
url: "/Home/Index/is_ajax_no",
timeout:3000, //超时请求
success: function(msg){
if(msg == 1){
clearInterval(iCount); //停止刷新事件,防止出现请求多次
location.href = '/Home/Index/reg_result_no_card';
return false;
}else{
clearInterval(iCount); //清除事件继续执行
iCount = setTimeout("ChangeTime()",3000);
}
},
//错误执行事件
error: function(xmlhttprequest, textstatus, message) {
if(textstatus==="timeout") {
clearInterval(iCount); //清除事件继续执行
iCount = setTimeout("ChangeTime()",3000);
} else {
alert(textstatus);
}
}
});
}