繁体   English   中英

ClearInterval不会停止计时器

[英]ClearInterval won't stop timer

我无法在javascript中停止setInterval,这是我的代码:

    var self = this;
    self.pt = setInterval(function() {
        if (self.startTime <= 0) {
            console.log(self.pt, self.startTime);
            self.updateScore();
            self.updateClock();
            self.showScore();
            clearInterval(self.pt);
        } else {

            self.startTime--;
            self.totalScore++;
            self.updateScore();
            self.updateClock();
        }

    }, 20);

clearInterval被完全忽略。 有什么线索吗? 控制台日志记录一个递增的数字和0(1234,0)。

我会用setTimeout()和递归而不是setInterval()

var self = this;
setTimeout(function periodicFunc() {
    if (self.startTime <= 0) {
        console.log(self.startTime);
        self.updateScore();
        self.updateClock();
        self.showScore();
    } else {
        self.startTime--;
        self.totalScore++;
        self.updateScore();
        self.updateClock();
        setTimeout(periodicFunc, 20);
    }
}, 20);

有关更多示例和为什么没有setInterval会更好的原因,请参见http://www.erichynds.com/blog/a-recursive-settimeout-pattern

setTimeout也没有内存问题,因为它在队列中放置了一个稍后要运行的函数,但是它立即返回,即没有堆栈帧等待该函数完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM