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