[英]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.