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 相关文章推荐
Google AJAX 搜索 API实现代码
Nov 17 Javascript
JS 控件事件小结
Oct 31 Javascript
Json实现异步请求提交评论无需跳转其他页面
Oct 11 Javascript
jquery手风琴特效插件
Feb 04 Javascript
JavaScript获取当前网页标题(title)的方法
Apr 03 Javascript
node.js回调函数之阻塞调用与非阻塞调用
Nov 13 Javascript
js获取隐藏元素的宽高
Feb 24 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
Jul 13 Javascript
Electron + vue 打包桌面操作流程详解
Jun 24 Javascript
JS随机密码生成算法
Sep 23 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
Aug 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查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
PHP生成器简单实例
2015/05/13 PHP
php常用字符函数实例小结
2016/12/29 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
python使用cPickle模块序列化实例
2014/09/25 Python
pycharm远程调试openstack代码
2017/11/21 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
python递归下载文件夹下所有文件
2019/08/31 Python
python中自带的三个装饰器的实现
2019/11/08 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
五一家具促销方案
2014/01/10 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
环境卫生整治简报
2015/07/20 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
银行求职信怎么写
2019/06/20 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
Pytest中skip skipif跳过用例详解
2021/06/30 Python