var timer = window.setInterval("getNewOrders()", 15000);
// ...
onclick: function (item, dialog) {
var timer = window.setInterval("getNewOrders()", 15000); // 重新聲明局部變量
dialog.close();
}
處理函數內 var timer 宣告了**新的區域變數**,遮蔽外層全域 timer。導致:
timer 未被清除,原定時器持續運行。timer 隨函數結束銷毀,無法後續 clearInterval。
3. 每次點擊「取消」都新增一個定時器,頻率倍增。
let timer = window.setInterval(getNewOrders, 15000); // 使用函數引用而非字串
// 取消按鈕
onclick: function (item, dialog) {
window.clearInterval(timer); // 清除全域定時器
timer = window.setInterval(getNewOrders, 15000); // 重新賦值全域變數
dialog.close();
}
let/const 替代 var,避免變量提升陷阱。setInterval 傳入函數引用(getNewOrders)而非字串,避免 eval 風險且效能更好。