Vue怎么优雅的清除定时器
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"Vue怎么优雅的清除定时器"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Vue怎么优雅的清除定时器"文章能帮助大家解决问题。前言清除定时器,
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
宝德网络技术有限公司怎么样
网络安全军地联席会议
华为数据库命名规范
信息技术类数据库过关
管理服务器的权限叫什么
网络安全教育作文1000
浙江软件开发驻场服务平台
分析网络安全法的法律作用
滨州微生活网络技术有限公司
数据库 事务同时执行
派出所网络安全保密教育内容
sql数据库查询顺序
碰撞安全性能数据库
华为网络技术大赛晋级
直招士官收网络安全的吗
如皋软件开发招聘
江苏服务器厂家虚拟主机
小学生网络安全个人简介文案
网络安全应用7000字
芝罘区软件开发解决方案
湖北通用软件开发市场价
网络安全研修班
圆梦互联网科技公司
保护网络安全的具体对策
南京软件开发服务资质三级认证
数据库并发操作主要解决
服务器安全配置方案
数据库pythonupdate
苹果软件开发难度
论文 数据库 免费