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);
        }
    }


    });
}





 

  

posted @ 2017-09-30 10:35  freedom/cn  阅读(1448)  评论(0编辑  收藏  举报