首先:
创建一个定时器函数
/**
* 倒计时
*/
countTime () {
if (this.maxtime >= 0 && this.maxtime <= 600) {
this.minutes = Math.floor(this.maxtime / 60)
if (this.minutes <= 9) {
this.minutes = '0' + Math.floor(this.maxtime / 60)
}
this.seconds = Math.floor(this.maxtime % 60)
if (this.seconds <= 9) {
this.seconds = '0' + Math.floor(this.maxtime % 60)
}
--this.maxtime
let _this = this;
this.timer = setTimeout(() => {
_this.countTime();
}, 1000);
} else {
this.timer = null;
alert('任务超时,本次任务已回收')
}
},
然后:
在created钩子进行调用,千万不要再mouthed里面进行调用,只会执行一次!!代码如下:
created() {
if ( this.countTime ) {
clearTimeout(this.countTime);
}
this.countTime();
},
再然后你就会发现,当你离开定时器那个页面后,定时器还在偷偷执行,等时间结束的时候就是执行你的else!
解决方法如下:
beforeDestroy() { clearInterval(this.timer); this.timer = null; },
这样子欧克了!