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 Mobile操作HTML5的常用函数总结
May 17 Javascript
跨域请求的完美解决方法(JSONP, CORS)
Jun 12 Javascript
fullpage.js全屏滚动插件使用实例
Sep 06 Javascript
vue-router路由参数刷新消失的问题解决方法
Jun 17 Javascript
vue-cli V3.0版本的使用详解
Oct 24 Javascript
实例讲解JavaScript预编译流程
Jan 24 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
微信小程序 slot踩坑的解决
Apr 01 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
May 03 Javascript
layUI实现前端分页和后端分页
Jul 27 Javascript
解决小程序无法触发SESSION问题
Feb 03 Javascript
vue实现按钮切换图片
Jan 20 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
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
两种php实现图片上传的方法
2016/01/22 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
Python对wav文件的重采样实例
2020/02/25 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
税务干部鉴定材料
2014/02/11 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
五水共治一句话承诺
2014/05/30 职场文书
新品发布会策划方案
2014/06/08 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
统招统分证明
2015/06/23 职场文书
环境卫生标语
2015/08/03 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang