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); 
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容