2013-02-03 70 views
1

可能重複:
Stop setInterval call in javascript如何禁用定時器?

我使用輪詢進度狀態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

可能複製 - HTTP: //stackoverflow.com/q/109086/1947535 –

+2

[MDN](https://developer.mozilla.org/en-US/docs/DOM/window.setInterval)是一個非常好的JS參考,如果你不確定特定功能如何工作。 – nnnnnn

回答

1

當您啓動間隔它返回一個整數,定義它:

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

然後,您可以清除間隔時,你的AJAX函數返回true:

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

setInterval()方法將返回一個整數/數字。你需要存儲這個,然後傳遞給方法clearInterval()來停止它。

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

再後來,當你想停止它,我認爲它會去:

window.clearInterval(intervalId); 
1

setInterval()返回的句柄,你可以在以後傳遞給window.clearInterval()停止定時器。

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