Я запрограммировал базовый c ММ: таймер обратного отсчета SS в JS, который должен немедленно остановиться, как только оставшиеся секунды равны нулю.
function startTimer() {
let timer = qs("select");
remainingSeconds = timer.options[timer.selectedIndex].value;
let timerDisplay = formatTimer(remainingSeconds);
id("time").innerHTML = timerDisplay;
timerId = setInterval(advanceTimer, 1000);
}
function formatTimer(timeValue) {
let minutes = Math.floor(timeValue / 60);
let seconds = remainingSeconds % 60;
if (minutes < 10) {
minutes = "0" + minutes;
}
if (seconds < 10) {
seconds = "0" + seconds;
}
return minutes + ":" + seconds;
}
function advanceTimer() {
if (remainingSeconds === 0) {
clearInterval(timerId);
//end the game logic here
console.log("times up!");
} else {
remainingSeconds--;
console.log("tick");
id("time").innerHTML = formatTimer(remainingSeconds);
}
}
Проблема, с которой я сталкиваюсь сейчас пытается заставить функцию advanceTimer()
останавливаться после того, как остальная частьSeconds уменьшается с 1 до 0. При тестировании функции с начального значения, например, 3 минуты (180 секунд), функция advanceTimer()
вызывается 181 раз вместо ровно 180 раз. Как я могу изменить поведение функций, чтобы больше не вызывать advanceTimer, когда остающиеся секунды равны нулю.