vue 中 clearTimeout 、clearInterval 问题

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); 
}

你可能感兴趣的:(vue 中 clearTimeout 、clearInterval 问题)