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();
繁星coding
TA贡献1797条经验 获得超4个赞
把这个doSomeThing();拿出来就行,functionmainLoop(){s=setTimeout(function(){mainLoop();},1000);doSomeThing();}
添加回答
举报
0/150
提交
取消