在异步方法中使用setInterval无法清除
1.常规写法
在异步方法中使用定时器调用方法
async getData(){
var vm = this;
clearInterval(this.intervalTime);
this.intervalTime = setInterval(() => {
vm.getOrder()
}, 5000);
}
离开页面时清除定时器
beforeDestroy:function(){
clearInterval(this.intervalTime);
this.intervalTime = null
}
写完发现切换到其他页面时定时器没有被清除,且打印定时器显示为undefined
2.解决
添加if判断,判断是否为调用页面
async getData(){
var vm = this;
clearInterval(this.intervalTime);
if (this.$route.path === '/home') {
this.intervalTime = setInterval(async () => {
vm.getOrder()
}, 5000);
}
}
再次测试,切换到其他页面不再调用,问题解决