博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue项目中定时器的管理
阅读量:6678 次
发布时间:2019-06-25

本文共 784 字,大约阅读时间需要 2 分钟。

最近遇到这种需求,需要定时刷新好几个接口的状态,而且要经常开启关闭轮询,一般我们用setTimeout来实现,并在setTimeout的回调中调用setTimeout来实现这种轮询。

但是在vue项目中会遇到这种情况:页面切换之后或者同一个页面改变请求参数之后,定时器会重复创建,而且定时器轮询的时间开始混乱,比如设定的10s一次,可能会2秒内执行好几次。我试过在页面创建created 和页面销毁 beforeDestory 的时候执行 clearTimeout ,在回调执行setTimeout 之前clearTimeout 但是都不行。

后来想到用vuex去管理定时器,结果符合预期,代码如下

computed:{  ...mapGetters([    'timer'  ])},created(){  this.clearTimer()},beforeDestory(){  this.clearTimer()},methods:{  getList(){    $axios.post('/api').then(response =>{      this.$store.dispatch('setTimer',setTimeout(this.getList, 10000))    })  },  clearTimer(){    if(this.timer){      clearTimeout(this.timer)    }  }}

如上,在创建页面和销毁页面的时候都判断一次timer 是否存在,如果存在就清除一次定时器,我们利用vuex的 gettersactions 来获取和设置定时器,这样就实现了vue项目中定时器的管理。

转载于:https://www.cnblogs.com/pengzhixin/p/7597913.html

你可能感兴趣的文章
3个netty5的例子,java开源框架简单介绍netty的用法
查看>>
动画内核核心与调用接口(代码编写)
查看>>
Yeslab安全实验室马老师vSphere 5.0下的新Feature之一NetFlow
查看>>
linux “洪ping”
查看>>
“黑客”眼中云计算的“五大漏洞”
查看>>
技术栈
查看>>
ubuntu14.04.2 添加ppa remastersys源 镜像ubuntu系统
查看>>
给图片加水印
查看>>
keytool的几个常用命令
查看>>
letter
查看>>
Vmware vSphere常见问题汇总(六)
查看>>
Django 入门学习(2)
查看>>
利用ntdsutil实现fsmo角色的转移
查看>>
type或者xtype总结
查看>>
网络安全系列之五十五 利用抓包来上传webshell
查看>>
Microsoft Office Communications Server 2007 R2 RTM 简体中文企业版部署速成篇之一
查看>>
在Linux中使用GoAccess分析Nginx的日志
查看>>
Struts2中的文件上传下载
查看>>
解决VMware Workstation 8不能最小化的问题
查看>>
cocos2d-x自制工具03:AnimatePacker for Mac/Win32 v1.1 Build1发布!
查看>>