为了账号安全,请及时绑定邮箱和手机立即绑定

小白遇到了 setTimeout 停止的问题

小白遇到了 setTimeout 停止的问题

PHP
缥缈止盈 2019-03-02 06:03:36
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();


查看完整回答
反对 回复 2019-03-16
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

把这个doSomeThing();拿出来就行,

function mainLoop() {

            s = setTimeout(function () {
                mainLoop();
            }, 1000);
            doSomeThing();
        }


查看完整回答
反对 回复 2019-03-16
  • 2 回答
  • 0 关注
  • 1438 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信