问题很好理解,在业务环境需要的情况下,进入页面即执行,如做倒计时
把拥有定时器和渲染页面数据this. s e t , t h i s . set,this. set,this.forceUpdate()函数,放在一起的时候
出现了问题:即在执行渲染函数时,页面重新生成了新的定时器,所以会造成 指数形式重复调用
解决问题:
1.只有一个定时器时,吧定时器定义到window下,执行前先行判断,如果有则不再创建,或者删除
if(!window.setTime){
window.setTime = setInterval(this.$forceUpdate(),1000)
}
2.当有多个定时器时,或者定时器需要根据业务列表逻辑生成多个时
this.timeeT.forEach(item => {
//删除所有定时器
clearInterval(item)
})
this.list.forEach((item, i) => {
//遍历列表数据
if (item.startDate) {
this.timeeT[i] = setInterval(() => {
//通过条件生成多个定时器
this.timee[i] = i+1
console.log(this.timee[i], i)
this.$forceUpdate()
}, 60000)
}
})
网上没有找到很多这种问题的解决方案,特此记录,大家如果有什么更好的办法,请写出来一起学习0.0