如何在javascript中清除递归调用中的间隔
我正在使用如何在javascript中清除递归调用中的间隔,javascript,setinterval,Javascript,Setinterval,我正在使用setInterval()函数以每5秒运行一个函数,但如果 满足某些条件 function do_the_job(){ //some code if(some_condition) { clearInterval(interval); }else{ clearInterval(interval); var interval = setInterval(do_the_job(),5000); } } 函数clearInter
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
成为一个全局变量或“范围更广”的变量,以便在清除时它实际上在范围内。在代码中,var interval=…
是局部变量,在函数调用范围之外不可见,因此在递归函数中不起作用
将间隔
设为全局变量,它就会工作
解决方案
var interval;
function do_the_job(){
//some code
if(some_condition)
{
clearInterval(interval);
}else{
clearInterval(interval);
interval = setInterval(do_the_job(),5000);
}
}
现在不是使用setInterval()
的好时机,请尝试使用setTimeout()
function do_the_job(){
//some code
if(some_condition)
{
// job done
}else{
setTimeout(do_the_job,5000);
}
}
不应该是无条件的
var interval = setInterval(do_the_job(),5000);
var interval = setInterval(do_the_job,5000);