Vue怎么优雅的清除定时器
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍"Vue怎么优雅的清除定时器"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Vue怎么优雅的清除定时器"文章能帮助大家解决问题。前言清除定时器,
千家信息网最后更新 2025年11月07日Vue怎么优雅的清除定时器前言
优化
衍生问题:beforeDestroy 没有触发?
这篇文章主要介绍"Vue怎么优雅的清除定时器"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Vue怎么优雅的清除定时器"文章能帮助大家解决问题。
前言
清除定时器,相信有相当一部分人是这么写的:
export default { data() { reurn { timer: null } }, mounted() { this.timer = setInterval(() => { console.log("setInterval") }, 2000) }, beforeDestroy() { clearInterval(this.timer) }}这是一段常见的代码,至少我身边的好几个小伙伴(1-3年经验的都有)都是这么写的,这里存在3个不优雅的问题:
clearInterval 后没有清空 timer 为 null。
开启定时器和清除定时器的代码分散开在两个地方,有损可读性/维护性,用尤大大的话说,这使得我们比较难于程序化地清理我们建立的东西。
timer 被定义在 data 里,实际上 timer 不需要什么响应式操作,定义在 data 里是没必要的,反而造成性能浪费。
优化
直接上代码:
export default { data() { reurn { } }, mounted() { let timer = setInterval(() => { console.log("setInterval") }, 2000) this.$once("hook:beforeDestroy", () => { clearInterval(timer) timer = null }) }}这里使用 hook 监听 beforeDestroy 生命周期,这样 timer 只需被定义在生命周期里,以上的问题就全部解决了。
衍生问题:beforeDestroy 没有触发?
在后台系统中,我们常常会设置页面缓存,而当路由被 keep-alive 缓存时是不走 beforeDestroy 生命周期的,所以有些小伙伴以为在 beforeDestroy 清除定时器就完事了,甚至都没有检查一下,实际上定时器并没有被清除掉。知道了原因也就好解决了,借助 activated 和 deactivated 这两个生钩子:
export default { data() { reurn { } }, mounted() { let timer = setInterval(() => { console.log("setInterval") }, 2000) this.$on("hook:activated", () => { if (timer === null) { // 避免重复开启定时器 timer = setInterval(() => { console.log("setInterval") }, 2000) } }) this.$on("hook:deactivated", () => { clearInterval(timer) timer = null }) }}这里需要注意一下,由于缓存原因,所以需要用 $on 而不是 $once,不然执行一次后就不会再触发了。
关于"Vue怎么优雅的清除定时器"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
定时器
优雅
问题
代码
周期
实际
生命
知识
缓存
两个
原因
实际上
小伙
小伙伴
行业
不同
实用
必要
东西
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
四川电商软件开发靠谱吗
为什么会读取服务器超时
网络安全审核办法解读
曙光服务器设置u盘启动
oracle11g服务器
1u 服务器 显卡
三调全国土地基础数据库
代理服务器ip地址大全
全球专利检索数据库
软件开发导论课程
幻塔为什么登录过的服务器要排队
扬州游戏软件开发项目
通信网络技术中fr指
串口服务器怎么看主机名
幼儿学习网络安全小游戏
前端和软件开发的关系
你无法在安全的服务器
数据库前端开发软件
mc网易版服务器有什么类型
游戏软件开发需要的软件
网络安全系列事件型漏洞
网络安全培训观后感
供应商产品数据库
衢州网络安全ppt
linuxweb服务器
软件开发专业毕业设计评语
数据库中安全性规则四元组
你无法在安全的服务器
知网科技成果数据库回溯
高中网络安全视频