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 相关文章推荐
JAVASCRIPT HashTable
Jan 22 Javascript
jQuery中jqGrid分页实现代码
Nov 04 Javascript
封装html的select标签的js操作实例
Jul 02 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
JavaScript实现图片轮播的方法
Jul 31 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 Javascript
通过sails和阿里大于实现短信验证
Jan 04 Javascript
javascript 面向对象实战思想分享
Sep 07 Javascript
vue axios请求频繁时取消上一次请求的方法
Nov 10 Javascript
vue 自定义组件添加原生事件
Apr 21 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
PHP输出日历表代码实例
2015/03/27 PHP
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
JavaScript Split()方法
2015/12/18 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
ES6 javascript中class类的get与set用法实例分析
2017/10/30 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
python获取糗百图片代码实例
2013/12/18 Python
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Python自定义简单图轴简单实例
2018/01/08 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
Python IDLE清空窗口的实例
2018/06/25 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
总经理任命书范本
2014/06/05 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
班主任经验交流材料
2014/12/16 职场文书
五一劳动节活动总结
2015/02/09 职场文书
行政处罚事先告知书
2015/07/01 职场文书
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers