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

大佬们遇到过这个问题吗? setTimeout 忽然stop了?

大佬们遇到过这个问题吗? setTimeout 忽然stop了?

开心每一天1111 2019-06-10 09:55:18
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 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

稍微改了一下调用顺序,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-06-10
?
繁星coding

TA贡献1797条经验 获得超4个赞

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

添加回答

举报

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