为了账号安全,请及时绑定邮箱和手机立即绑定

小白遇到了 setTimeout 停止的问题

小白遇到了 setTimeout 停止的问题

慕尼黑5688855 2019-04-27 22:19:56
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();上面这段代码为什么执行五次以后不会自动停止啊?
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

稍微改了一下调用顺序,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();
                            
查看完整回答
反对 回复 2019-04-27
?
阿晨1998

TA贡献2037条经验 获得超6个赞

把这个doSomeThing();拿出来就行,
functionmainLoop(){
s=setTimeout(function(){
mainLoop();
},1000);
doSomeThing();
}
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 379 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信