let s, n = 0;function mainLoop() {s = setTimeout(function () {
doSomeThing();
mainLoop();}, 1000);}function doSomeThing() {n ++;
console.log(n);if (n > 5) { stop();
}}function stop() {console.log("---stop----")
clearTimeout(s);}mainLoop();上面这段代码为什么执行五次以后不会自动停止啊?
2 回答
![?](http://img1.sycdn.imooc.com/533e4ce900010ae802000200-100-100.jpg)
慕工程0101907
TA贡献1887条经验 获得超5个赞
稍微改了一下调用顺序,mainLoop();出现了死循环,你判断之后计时器虽然停了,但方法调用时又重新启动了mainLoop()里的计时器
let s, n = 0; function mainLoop() { s = setTimeout(function () { doSomeThing(); }, 1000); } function doSomeThing() { n++; console.log(n); if (n > 4) { stop(); }else{ mainLoop(); } } function stop() { console.log("---stop----") clearTimeout(s); } mainLoop();
![?](http://img1.sycdn.imooc.com/5458453d0001cd0102200220-100-100.jpg)
德玛西亚99
TA贡献1770条经验 获得超3个赞
把这个doSomeThing();拿出来就行,
function mainLoop() { s = setTimeout(function () { mainLoop(); }, 1000); doSomeThing(); }
- 2 回答
- 0 关注
- 1438 浏览
添加回答
举报
0/150
提交
取消