美文网首页
Vue组件中的定时器销毁问题

Vue组件中的定时器销毁问题

作者: 牛牛_lz | 来源:发表于2018-12-28 16:40 被阅读0次

方法一:

在data函数中定义定时器名称:

data(){
    return {
        timer: null // 定时器名称
    }
}

然后这样使用定时器:

this.timer = (()=>{
    // To do something
}, 1000)

最后在beforeDestroy()生命周期内清除定时器:

beforeDestroy() {
    clearInterval(this.timer);        
    this.timer = null;
}

方案1有两点不好的地方,引用尤大的话来说就是:

  • 它需要在这个组件实例中保存这个 timer,如果可以的话最好只有生命周期钩子可以访问到它。这并不算严重的问题,但是它可以被视为杂物。
  • 我们的建立代码独立于我们的清理代码,这使得我们比较难于程序化的清理我们建立的所有东西。

方法二

该方法是通过$once这个事件侦听器器在定义完定时器之后的位置来清除定时器。以下是完整代码:

const timer = setInterval(() =>{            
    // 某些定时器操作                
}, 500);            
// 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
this.$once('hook:beforeDestroy', () => {    
    clearInterval(timer);                      
})

相关文章

  • Vue组件中的定时器销毁问题

    方法一: 在data函数中定义定时器名称: 然后这样使用定时器: 最后在beforeDestroy()生命周期内清...

  • 定时器的销毁

    时钟组件 父组件 执行结果 从上图可得知:虽然组件已经被销毁,但是定时器还在运行。 定时器销毁时机 beforeD...

  • 内存泄漏

    常见的内存泄漏场景 vue组件中定义的计时器不会在组件被销毁时自动销毁,需在beforeDestroy中手动清除 ...

  • Vue中在组件销毁时清除定时器

    在mounted中创建并执行定时器,然后在beforeDestroy或者destroyed中清除定时器 如果用到了...

  • vue父子组件的生命周期

    vue中父子组件渲染,子组件更新,至父组件销毁的生命周期钩子函数触发顺序:beforecreate(父)=> cr...

  • Vue中在组件销毁时清除定时器(setInterval)

    在mounted中创建并执行定时器,然后在beforeDestroy或者destroyed中清除定时器 这样在组件...

  • async await 定时器没法清掉问题

    在页面快速切换的情况下,定时器无法清掉 其实已经在组件销毁前beforeDestroy调了清除定时器,但是实际还是...

  • vue定时器销毁

  • Vue @hook

    使用之前我们在Vue使用定时器的时候,在创建定时器的时候,当页面不存在的时候需要销毁定时器。我们一般会这样使用 但...

  • NSTimer定时器的销毁

    定时器的销毁 1、如果是在VC中创建的定时器,需要在dealloc方法中销毁 2、有时会自定义View,并且在这个...

网友评论

      本文标题:Vue组件中的定时器销毁问题

      本文链接:https://www.haomeiwen.com/subject/hnkelqtx.html