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 LigerUI 使用教程表格篇(1)
Jan 18 Javascript
jquery如何把参数列严格转换成数组实现思路
Apr 01 Javascript
js实现按钮加背景图片常用方法
Nov 01 Javascript
angular.element方法汇总
Jan 07 Javascript
深入理解JavaScript中的箭头函数
Jul 28 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
Oct 14 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
Sep 26 Javascript
老生常谈jquery中detach()和remove()的区别
Mar 02 Javascript
微信小程序简单实现form表单获取输入数据功能示例
Nov 30 Javascript
axios携带cookie配置详解(axios+koa)
Dec 28 Javascript
npm 常用命令详解(小结)
Jan 17 Javascript
Node.js API详解之 dns模块用法实例分析
May 15 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结合表单实现一些简单功能的例子
2011/06/04 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
浅析php原型模式
2014/11/25 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
全面理解闭包机制
2016/07/11 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
Python实现京东秒杀功能代码
2019/05/16 Python
python数值基础知识浅析
2019/11/19 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
python获取栅格点和面值的实现
2020/03/10 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
幼儿园教师教育感言
2014/02/28 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
建党伟业的观后感
2015/06/01 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
PHP正则表达式之RCEService回溯
2022/04/11 PHP
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python
全网非常详细的pytest配置文件
2022/07/15 Python