3

可能重复:
在 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);
4

4 回答 4

3

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

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

然后,您可以在 AJAX 函数返回 true 时清除该间隔:

...
success: function(response) {
  console.log(response);
  if (response['status'] != 'ok') {
    clearInterval(timer);
    return;
  }
}
...
于 2013-02-03T12:05:35.857 回答
2

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

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

然后,当你想停止它时,我认为它会去:

window.clearInterval(intervalId);
于 2013-02-03T12:04:59.023 回答
1

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

于 2013-02-03T12:05:03.997 回答
1
var x = window.setInterval(...);
// ...
window.clearInterval(x);
于 2013-02-03T12:05:15.743 回答