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 相关文章推荐
不用ajax实现点击文字即可编辑的方法
Dec 16 Javascript
javascript的内存管理详解
Aug 07 Javascript
JS命名空间的另一种实现
Aug 09 Javascript
jQuery打印图片pdf、txt示例代码
Jul 22 Javascript
原生js实现商品放大镜效果
Jan 12 Javascript
微信小程序实现点击返回顶层的方法
Jul 12 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
js的函数的按值传递参数(实例讲解)
Nov 16 Javascript
JS集合set类的实现与使用方法示例
Feb 01 Javascript
angularjs自定义过滤器demo示例
Aug 24 Javascript
JS实现吸顶特效
Jan 08 Javascript
vue的项目如何打包上线
Apr 13 Vue.js
解决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
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
php 文章调用类代码
2011/08/11 PHP
深入掌握include_once与require_once的区别
2013/06/17 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
js添加table的行和列 具体实现方法
2013/07/22 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
node跨域请求方法小结
2017/08/25 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
python实现祝福弹窗效果
2019/04/07 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
python字符串的index和find的区别详解
2020/06/20 Python
求职简历自我评价怎么写
2015/03/10 职场文书
蜗居观后感
2015/06/11 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
体育委员竞选稿
2015/11/21 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
vscode内网访问服务器的方法
2022/06/28 Servers