這個計時器是放在一個 地圖圖表 function map()裡面的
功能為倒數計時後,執行另一張圖表
地圖我是利用日期來刷新地圖
每當我刷新地圖,地圖已經更新了
但他舊有function的計時器依然會執行,無法關閉
且也不聽指令onmousemove = resetTimer;(如果滑鼠移動,正常會重製倒數時間)
新執行的function map()會正常運行
(如下方圖片,會出現兩次倒數數字)
我該如何關閉舊的function map()?
好讓setInterval不會重複執行
/*自動計時*/
function (chart) {
var time,
sessionTimeout = 7,
remainingTime = sessionTimeout,
intervalHandle,
lastPos = [0, 0];
function displaySessionTimeout() {
console.log(remainingTime);
}
function updateTimer() {
remainingTime -= 1;
if (remainingTime >= 0) {
displaySessionTimeout()
} else {
clearInterval(intervalHandle);
displaySessionTimeout();
restEventArea();
}
}
function resetTimer(e) {
if (e.clientX !== lastPos[0] || e.clientY !== lastPos[1]) {
lastPos = [e.clientX, e.clientY];
remainingTime = sessionTimeout;
displaySessionTimeout();
}
}
intervalHandle = setInterval(updateTimer, 1000);
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;
displaySessionTimeout();
}
let myTimer = null;
const btnStart = document.getElementById('start');
const btnReset = document.getElementById('reset');
btnStart.addEventListener('click', () => {
myTimer = setInterval(() => console.log(Date.now()), 1000);
})
btnReset.addEventListener('click', () => {
if (myTimer) {
clearInterval(myTimer);
}
})
開始計時
intervalHandle = setInterval(run, 3000);
結束計時
clearInterval(intervalHandle);
如果舊的Timer可以達成你的目標的話,
其實只要判斷intervalHandle決定要不要新增計時器就可以.
我看你的resetTimer沒有關掉Timer啊...