解决定时器导致页面卡顿、卡死的问题

本文介绍了一种在项目中解决定时器引发的线程占用和内存泄漏问题的方法,通过全局定义定时器并确保在适当时机清除,有效提升页面性能,防止页面卡顿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中有时需要使用定时器,去不断刷新数据重载部分页面,长时间使用会导致线程占用和内存泄漏,导致页面卡顿、卡死的现象。网上查找过不少资料,无法根本解决此问题,下面介绍本人实践过的有效方法:

var timerQ = null //首先可以全局定义一个定时器

//清理定时器的公用方法
clearTimerQ(){
  try {
     window.clearInterval(timerQ)
   } catch (error) {}
   window.timerQ = null
},
//发送交易获取数据
  send_request() {
    console.log("开始发送交易")
    var that = this
    //首先先清除定时器,或在mounted周期清除定时器,并将timerQ重置为null
    this.clearTimerQ()
    
    ...
    //然后在交易成功或完成的函数内,处理交易结果后,再次发送交易刷新页面
    success: res => {
	    timerQ = setInterval(() => {
          that.send_request()
         }, 1000)
     }
    ...  
    });
  },
  
  //建议在页面加载前和销毁时,都清除一遍定时器,防止内存泄漏解放线程
  created(){
    this.clearTimerQ()
  },
  destoryed(){
    this.clearTimerQ()
  },
  

这种方法使当前页面始终只有一个定时器在运行,可完美解决上述因长时间使用定时器导致的线程占用和内存泄漏问题,导致页面卡顿、卡死的现象。
最后,原创不易,如本文对您有所帮助,麻烦点个赞谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值