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 相关文章推荐
textarea的value是html文件源代码,存成html文件的代码
Apr 20 Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 Javascript
JavaScript获取onclick、onchange等事件值的代码
Jul 22 Javascript
jQuery插件pagination实现分页特效
Apr 12 Javascript
javascript中tostring()和valueof()的用法及两者的区别
Nov 16 Javascript
JS去除空格和换行的正则表达式(推荐)
Jun 14 Javascript
DOM中事件处理概览与原理的全面解析
Aug 16 Javascript
使用node.js中的Buffer类处理二进制数据的方法
Nov 26 Javascript
sublime text配置node.js调试(图文教程)
Nov 23 Javascript
Angular ElementRef简介及其使用
Oct 01 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
Sep 16 Javascript
微信小程序实现加入购物车滑动轨迹
Nov 18 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
php重定向的三种方法分享
2012/02/22 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
js数组的操作详解
2013/03/27 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
python元组的概念知识点
2019/11/19 Python
Python with标签使用方法解析
2020/01/17 Python
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
一套C++笔试题面试题
2012/06/06 面试题
MySQL面试题目集锦
2016/04/14 面试题
离婚协议书范本(2014版)
2014/09/28 职场文书
财务会计实训报告
2014/11/05 职场文书
运动会宣传稿100字
2015/07/23 职场文书
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android