在beforeSend ajax上暂停setinterval的正确方法

时间:2012-11-30 09:12:25

标签: jquery ajax setinterval

我有这段代码。

 var centerTimer = 0;
    function startCenterRefresh( refreshTime,position,params ) {
        centerTimer = setInterval(function() {
            jQuery.ajax({
                type: "POST",
                url: host+"/forms/refresh-center.php",
                beforeSend:function(){ stopCenterRefresh(); },
                success: function(){console.log(1);},
                complete:function(){startCenterRefresh(refreshTime,position,params);}
            });
        },refreshTime);
    }

    function stopCenterRefresh() {
        clearInterval( centerTimer );
    }

这是在ajax请求上暂停onSend上的setInterval然后在ajax请求完成后恢复setInterval的正确方法吗? 我不确定我是否满足了我对这次执行的期望。

您的想法将受到高度赞赏和奖励。

谢谢!

1 个答案:

答案 0 :(得分:4)

clearInterval不会暂停对函数的定期调用:它会删除它。所以你在第一次通话时就完全停止了。因此无效。

你可能应该做的只是在成功回调中重新排队(使用setTimeout)ajax调用。

例如:

var call = function() {
    $.ajax({ ... }).done(function(...){
       ...
       setTimeout(call, refreshTime);
    });
};