簡體   English   中英

如何在JavaScript中清除遞歸調用中的間隔

[英]How to clear interval in recursive call in javascript

我正在使用setInterval(); 函數每5秒運行一次函數,但是如果某些條件滿足,我想清除此間隔。

function do_the_job(){ 
 //some code
 if(some_condition)
  {
     clearInterval(interval);
  }else{
      clearInterval(interval);
      var interval = setInterval(do_the_job(),5000);
      }
 }

函數clearInterval(); 在這里不工作。

通過將其聲明移至if語句之外,使interval成為全局變量或“更高范圍的變量”,以便在清除時實際上將其置於范圍內。

這不是使用setInterval()的好時機,而是嘗試setTimeout()

function do_the_job(){ 
 //some code
 if(some_condition)
  {
     // job done
  }else{
      setTimeout(do_the_job,5000);
      }
 }

在您的代碼中, var interval =...是局部的,在函數調用范圍之外不可見,因此在遞歸函數中不起作用。

interval設為全局變量,它將起作用。

var interval;
function do_the_job(){ 
 //some code
 if(some_condition)
  {
     clearInterval(interval);
  }else{
      clearInterval(interval);
      interval = setInterval(do_the_job(),5000);
      }
 }
 var interval = setInterval(do_the_job(),5000);

不應有假肢

 var interval = setInterval(do_the_job,5000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM