timer = null // 定时器
created () {
this.timer = setInterval(() => {
this.initData()
}, 5000) // 5s
}
async initData () {
.....
}
destroyed () {
clearInterval(this.timer)
}
setInterval不会清除定时器队列,每重复执行1次都会导致定时器叠加,最终导致页面卡死
解决办法:setTimeout是自带清除定时器的(注:箭头函数解决setTimeout内的this指向问题)
this.timer = setInterval(() => {
setTimeout(() => {
this.initData()
}, 0)
}, 5000)