vue中setInterval的清除

vue中setInterval的清除

注:本文借鉴了很多方法整理得来

方法一:

直接使用 window.setInterval()window.clearInterval()

方法二:

在data 中创建一个定时器对象,并在想使用定时器的方法中实例化这个对象进行定时器的使用:

data() {            
    return {                              
        timerInterval: null  // 定时器名称          
    }        
},
mouted() {
    this.timerInterval= (() => {
    // 某些操作
    }, 1000)
},
beforeDestroy() {
    clearInterval(this.timerInterval);        
    this.timer = null;
}

注: 有两个潜在的问题:

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

方法三:(官方推荐)

通过 $once 时间侦听器在定义完定时器之后的位置来清除定时器:

mounted() {
    const timer = setInterval(() =>{                    
    // 某些定时器操作                
    }, 500);            
    // 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
    this.$once('hook:beforeDestroy', () => {            
        clearInterval(timer);                                    
    })
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值