vue 中 clearTimeout 、clearInterval 失效、无效果
作者:子长
一般需要在组件、页面销毁后需要清除设置的延时器、计时器,就需要用到 clearTimeout() 或者 clearInterval() ,正常情况下一般都能销毁,如下:
data(){
return{
times: null,
}
},
mounted() {
this.times = setInterval(() => {
console.log('计时中...')
}, 1000)
},
beforeDestroy(){
clearInterval(this.times)
this.times = null
}
但有些时候计时器不能及时销毁,如下:
let times
window.onresize = () => {
if(times!== null){
clearTimeout(times);
times= null
}
times= setTimeout(() => {
console.log('延时中...')
}, 1000);
}
以上代码逻辑不能及时清除计时器,需要通过 window.setTimeout 、window.clearTimeout 才能及时清除:
let times
window.onresize = () => {
if(times!== null){
window.sclearTimeout(times);
times= null
}
times= window.ssetTimeout(() => {
console.log('延时中...')
}, 1000);
}