Vue清除所有JS定時器
在webpack + vue 的項目中如何在頁面跳轉的時候清除所有的定時器
JS定時器會有一個返回值(數字),通過這個返回值我們可以找到這個定時器
在vue項目中可以使用路由守衛的 beforeEach方法,來進行清除功能
首先,聲明一個全局變量數組,把所有的定時器的返回值放到數組中,
(因為定時器返回的值會隨着調用次數的增加而增加,所以無法確定的去判斷返回值具體是多少,只有接收這個返回值,然后進行操作。)
然后在每次要跳轉進入新頁面的時候,通過beforeEach方法,把舊頁面的定時器全部清除
//聲明數組,接收定時器的返回值
const timerCount = [];
//設置定時器
timerCount[0] = setInterval(function () {
//....
},1000)
timerCount[1] = setInterval(function () {
//....
},1000)
//入口文件
router.beforeEach((to, from, next) => {
for(let i = 0; i <= timerCount.length; i++){
clearInterval(timerCount[i]);
}
timerCount.splice(0, timerCount.length)
next()
})
//使用clearInterval(i)可以清除指定的定時器,其中參數i是定時器的返回值
//這里每次都把數組清除了,當然,不清楚也沒有什么影響
這樣,頁面所有的定時器,就全部清除了