Vue清除定时器setInterval优化方案分享


Posted in Javascript onJuly 21, 2020

两种方案清除定时器,开发者经常使用方案1,建议使用方案2

方案1

首先我在data函数里面进行定义定时器名称:

data() {      
  return {               
    timer: null // 定时器名称     
  }    
},

然后这样使用定时器:

this.timer = (() => {
  // 某些操作
}, 1000)

最后在beforeDestroy()生命周期内清除定时器:

beforeDestroy() {
  clearInterval(this.timer);    
  this.timer = null;
}

方案1有两点不好的地方,引用尤大的话来说就是:

它需要在这个组件实例中保存这个 timer,如果可以的话最好只有生命周期钩子可以访问到它。这并不算严重的问题,但是它可以被视为杂物。

我们的建立代码独立于我们的清理代码,这使得我们比较难于程序化的清理我们建立的所有东西。

方案2

该方法是通过$once这个事件侦听器器在定义完定时器之后的位置来清除定时器。

以下是完整代码:

const timer = setInterval(() =>{          
  // 某些定时器操作        
}, 500);      
// 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
this.$once('hook:beforeDestroy', () => {      
  clearInterval(timer);                  
})

其他程序化的事件侦听器

通过 $on(eventName, eventHandler) 侦听一个事件

通过 $once(eventName, eventHandler) 一次性侦听一个事件

通过 $off(eventName, eventHandler) 停止侦听一个事件

附官网详细地址:程序化事件侦听器

补充知识:vue在mounted中创建定时器与清除定时器

我就废话不多说了,大家还是直接看代码吧~

mounted(){
   var that=this;
    var num = 1;
    var ss='';
   var a=setInterval(()=>{
    a+=10;
     if(this num===100){
      ss='success';
      console.log(ss)  
    			clearInterval(a)  //当num等于100时清除定时器
   } 
   }, 1000); 
  }

以上这篇Vue清除定时器setInterval优化方案分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
超轻量级的基于jquery的三级展开列表
Apr 26 Javascript
javascript标签在页面中的位置探讨
Apr 11 Javascript
node.js下when.js 的异步编程实践
Dec 03 Javascript
JS获取随机数和时间转换的简单实例
Jul 10 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
Mar 26 Javascript
强大的JavaScript响应式图表Chartist.js的使用
Sep 13 Javascript
javaScript 连接打印机,打印小票的实例
Dec 29 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
Jan 18 Javascript
vue技术分享之你可能不知道的7个秘密
Apr 09 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
Sep 02 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
Oct 09 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
Jul 21 #Javascript
JavaScript undefined及null区别实例解析
Jul 21 #Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 #Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 #Javascript
vue 实现tab切换保持数据状态
Jul 21 #Javascript
vue通过过滤器实现数据格式化
Jul 20 #Javascript
原生JavaScript写出Tabs标签页的实例代码
Jul 20 #Javascript
You might like
一个ftp类(ini.php)
2006/10/09 PHP
PHP 替换模板变量实现步骤
2009/08/24 PHP
PHP错误机制知识汇总
2016/03/24 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
js实现每日签到功能
2018/11/29 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
跟老齐学Python之开始真正编程
2014/09/12 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
Python中查看文件名和文件路径
2017/03/31 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
python程序需要编译吗
2020/06/19 Python
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
医学院毕业生自荐信范文
2014/03/06 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js