2013-11-15 23 views
0

我正在使用下面的代碼根據條件遞歸調用一個函數。但是一旦setInterval被設置,它就不清楚了,一次又一次的setInterval被設置。 如何清除重複設置的setInterval函數?如何在JQuery中重複設置setInterval函數

function testFunction(ttlcount){ 

     jQuery.ajax({url:URL, 
      type: "POST", 
      data: { 'action_sub':'action'}, 
      success:function(res){ 

          if(res < 0){ 
           if(interval != 'undefined'){ 
            clearInterval(setInterval); //clearinterval 
           } 
           interval = setInterval(function(){testFunction(ttlcount)},1000); 

           } else { 
           clearInterval(interval);//clearinterval 
       //Do something ... 
          } 


     },error:function(e){ 

     }}); 
    } 
+1

爲什麼你不只是使用setTimeout! –

+0

你應該調用'interval'上的clearInterval,而不是'testFunction'。例如更改clearInterval(testFunction); clearInterval(interval); –

回答

2

嘗試

setTimeout(callback function, timeout) 

這將只運行一次,如果你需要運行這個單一的計時器,然後再調用它。

0
if(interval != 'undefined'){ 
    clearInterval(testFunction); //clearinterval 
} 

這實際上應該是:

if(interval !== undefined){ 
    clearInterval(interval); //clearinterval 
} 

當你打電話的setInterval,你會得到一個參考回到實際設定的時間間隔。這是你需要傳遞給clearInterval來阻止它的引用,而不是由setInterval執行的回調。