[英]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.