猿问

小白遇到了 setTimeout 停止的问题

lets,n=0;
functionmainLoop(){
s=setTimeout(function(){
doSomeThing();
mainLoop();
},1000);
}
functiondoSomeThing(){
n++;
console.log(n);
if(n>5){
stop();
}
}
functionstop(){
console.log("---stop----")
clearTimeout(s);
}
mainLoop();
上面这段代码为什么执行五次以后不会自动停止啊?
慕尼黑5688855
浏览 380回答 2
2回答

慕姐4208626

稍微改了一下调用顺序,mainLoop();出现了死循环,你判断之后计时器虽然停了,但方法调用时又重新启动了mainLoop()里的计时器lets,n=0;functionmainLoop(){s=setTimeout(function(){doSomeThing();},1000);}functiondoSomeThing(){n++;console.log(n);if(n>4){stop();}else{mainLoop();}}functionstop(){console.log("---stop----")clearTimeout(s);}mainLoop();

阿晨1998

把这个doSomeThing();拿出来就行,functionmainLoop(){s=setTimeout(function(){mainLoop();},1000);doSomeThing();}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答