猿问

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

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();上面这段代码为什么执行五次以后不会自动停止啊?
开心每一天1111
浏览 278回答 2
2回答

弑天下

稍微改了一下调用顺序,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

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

相关分类

JavaScript
我要回答