1

我有这个代码。

 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请求的beforeSend上暂停setInterval然后在ajax请求完成后恢复setInterval的正确方法吗?我不确定我是否达到了我对这次执行的期望。

您的想法将不胜感激和奖励。

谢谢!

4

1 回答 1

4

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

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

例如 :

var call = function() {
    $.ajax({ ... }).done(function(...){
       ...
       setTimeout(call, refreshTime);
    });
};
于 2012-11-30T09:16:27.753 回答