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 回答
慕工程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();
德玛西亚99
TA贡献1770条经验 获得超3个赞
把这个doSomeThing();拿出来就行,
function mainLoop() {
s = setTimeout(function () {
mainLoop();
}, 1000);
doSomeThing();
}- 2 回答
- 0 关注
- 1513 浏览
添加回答
举报
0/150
提交
取消
