我正在尝试创建一个简单的倒数计时器,一旦遇到麻痹情况就会动态停止。 (在倒计时应该停止时实现setTimeout到演示)
我通常不会使用setInterval/clearInterval
这样的东西,所以我研究并尝试了一些我发现但仍然无效的东西。
我相信这里只有很少的差异。
这是代码。
var intervals;
function startTimer(isStarted) {
intervals = setInterval(_countDown, 1000);
var requestTimer = 60,
seconds;
function _countDown() {
seconds = parseInt(requestTimer % 60, 10);
seconds = seconds < 10 ? "0" + seconds : seconds;
console.log(seconds);
if (--requestTimer < 0) {
requestTimer = 60;
}
}
if (!isStarted) {
console.log("timer now should stop!!!!!!");
clearInterval(intervals);
}
}
startTimer(true);
setTimeout(startTimer, 3000);
&#13;
<h1>Open the console to see the timer.</h1>
&#13;
答案 0 :(得分:1)
实际上,由于两次调用startTimer-method(最后两行代码),因此实际上是两次启动间隔。这就是为什么单个clearTimeout不再削减它的原因。您还可以在声明应执行的函数之前设置间隔。所以我会简化这样的事情:
var interval;
function startTimer() {
var requestTimer = 60,
seconds;
function _countDown() {
seconds = parseInt(requestTimer % 60, 10);
seconds = seconds < 10 ? "0" + seconds : seconds;
console.log(seconds);
if (--requestTimer < 0) {
requestTimer = 60;
}
}
interval = setInterval(_countDown, 1000);
}
startTimer();
setTimeout(function() {
console.log("timer now should stop!!!!!!");
clearTimeout(interval);
}, 3000);