vue 下定时器与渲染页面方法通用 执行指数形式重复调用的问题 (setInterval,this.$set,this.$forceUpdate())

问题很好理解,在业务环境需要的情况下,进入页面即执行,如做倒计时
把拥有定时器和渲染页面数据this. s e t , t h i s . set,this. setthis.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

猜你喜欢

转载自blog.csdn.net/weixin_43311271/article/details/113308267