vue 如何清除定时器

在页面中需要定时刷新局部数据,在数据变化是否频繁的情况下,没有必要使用webSocket,因为数据变化频繁,数据实时变化太快看不清楚。因此页面会定时调用后台接口以达到实时刷新数据的效果。

  1、在data中定义一个定时器变量,timer

  2、在mounted中把定时器的复制为timer

  3、页面离开前,在beforeDestroy 中清除定时器timer

复制代码
data() {
  return {
    timer:null, //定时器名称
  }
},
created() {
  this.getHangTotal();
},
mounted() {
  this.timer = setInterval(
    this.getHangTotal, 10000
  );
},
beforeDestroy(){
  clearInterval(this.timer);  // 清除定时器
  this.timer = null;
},
methods: {
  getHangTotal(){ 
      //………… 
    }
}
复制代码

 

1、在data函数里面进行定义定时器名称

2、在beforeDestroy()生命周期内清除定时器

这种做法的缺点是:

  (1)vue实例中需要有这个定时器的实例,感觉有点多余;

  (2)创建的定时器代码和销毁定时器的代码没有放在一起,通常很容易忘记去清理这个定时器,不容易维护;

新的清除定时器方法是通过$once这个事件侦听器器在定义完定时器之后的位置来清除定时器。优点是使得代码可读性更强,一目了然。

直接在需要定时器的方法或者生命周期函数中声明并销毁

复制代码
export default{
  methods:{
    fun1(){
      const timer = setInterval(()=>{
        //需要做的事情
         console.log(11111);
      },1000);
      this.$once('hook:beforeDestroy',()=>{
        clearInterval(timer);
        timer = null;
      })
    }
  }
}
复制代码

 

posted @   7c89  阅读(675)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示