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函数内部this指针指向的三种方法
Apr 23 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
JavaScript获取文本框内选中文本的方法
Feb 20 Javascript
XMLHttpRequest Level 2 使用指南
Aug 26 Javascript
Angular和百度地图的结合实例代码
Oct 19 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
Mar 06 Javascript
jQuery扇形定时器插件pietimer使用方法详解
Jul 18 jQuery
浅谈vue中慎用style的scoped属性
Nov 28 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
May 14 Javascript
JS实现提示框跟随鼠标移动
Aug 27 Javascript
Vue项目打包压缩的实现(让页面更快响应)
Mar 10 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
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
Javascript浅谈之this
2013/12/17 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
Zabbix实现微信报警功能
2016/10/09 Python
python中对_init_的理解及实例解析
2019/10/11 Python
django 模型中的计算字段实例
2020/05/19 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
自荐信格式范文
2013/10/07 职场文书
电台实习生求职信
2014/02/25 职场文书
工商管理自荐书
2014/07/06 职场文书
文案策划专业自荐信
2014/07/07 职场文书
承诺书范本
2015/01/21 职场文书
教师节班会开场白
2015/06/01 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书
利用python做数据拟合详情
2021/11/17 Python