如何禁用定时器?

4

可能是重复问题:
如何在JavaScript中停止setInterval调用

我使用window.setInterval方法来轮询进度状态。但当它完成时需要禁用此计时器。如何禁用计时器?

      window.setInterval(function(){$.ajax({
          type: 'GET',
          url: 'imports',
          success: function(response){
            console.log(response);
            if(response['status'] != 'ok'){
              return;
            }

            $('.bar').css('width', response['progress'] + '%');

            if(response['step'] == 'completed') location.reload();
      }}, 'json');}, 1000);

2
可能是重复的 - https://dev59.com/03VD5IYBdhLWcg3wDG_m - m.brindley
2
如果您不确定特定函数的工作原理,MDN 是一个非常好的 JavaScript 参考资料。 - nnnnnn
4个回答

3

当您启动时间间隔时,它会返回一个定义它的整数:

var timer = window.setInterval( ... );

当您的AJAX函数返回true时,您可以清除该间隔:

...
success: function(response) {
  console.log(response);
  if (response['status'] != 'ok') {
    clearInterval(timer);
    return;
  }
}
...

2

setInterval() 方法会返回一个整数/数字。您需要将其存储,然后将其传递给方法 clearInterval() 以停止它。

var intervalId = window.setInterval(.....);

然后,当您想停止它时,我认为应该执行以下步骤:

window.clearInterval(intervalId);

2

setInterval() 返回一个句柄,您可以稍后将其传递给 window.clearInterval() 来停止计时器。


1
var x = window.setInterval(...);
// ...
window.clearInterval(x);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接