收藏
回答

clearInterval清除计时器无效?

我在data中定义了一个变量来存放计时器


在onHide函数以及onUnload函数中均使用clearInterval(that.data.setInter)来清楚定时器,但是在页面跳转以后函数有执行,但是计时器仍在继续,请问如何清除

回答关注问题邀请回答
收藏

3 个回答

  • TNT
    TNT
    2019-08-22

    很简单,在每次执行倒计时之前先清除下定时器,这样可有效防止倒计时抖动等问题

    countDown() {
      clearInterval(this.data.setInter)    
      this.data.setInter = setInterval(() => {    
        console.log(1)    
      }, 5000)      
    }    
    
    
    2019-08-22
    有用 5
    回复 2
    • 鹤辞。
      鹤辞。
      2020-05-15
      大佬666
      2020-05-15
      回复
    • 鹤辞。
      鹤辞。
      2020-05-15回复TNT
      碰到了这个定时器无法清除的问题 后来也是每次开启定时器之前清除
      2020-05-15
      回复
  • 小北
    小北
    2019-09-27

    遇到同样的问题,页面正常load时加载定时器,onUnload里清除定时器,但是返回到前一个页面,这些定时器还在不断地运行,伤脑筋

    2019-09-27
    有用
    回复 1
    • N
      N
      2019-10-11
      我重复进入页面,setInterval里setData修改页面样式,结果整个页面都不重新渲染了
      2019-10-11
      回复
  • Why not?
    Why not?
    2019-08-22

    应该是你的写法有问题,弄个代码片段看一下

    2019-08-22
    有用
    回复 8
    • 吴落落~
      吴落落~
      2019-08-22
      代码片段单拎出来定时器就可以正常清除,但是在项目上无法清除
      2019-08-22
      回复
    • Why not?
      Why not?
      2019-08-22回复吴落落~
      setInterval是怎么触发的,有没有可能执行了大于一次?
      2019-08-22
      回复
    • 吴落落~
      吴落落~
      2019-08-22
      想问一下that.data.setInter打印出来的数字是什么东西
      2019-08-22
      回复
    • 吴落落~
      吴落落~
      2019-08-22回复Why not?
      确实执行了大于一次
      2019-08-22
      回复
    • Why not?
      Why not?
      2019-08-22回复吴落落~
      那就简单了,每次重新复制前把旧的clear一下就行了
      2019-08-22
      回复
    查看更多(3)
登录 后发表内容
问题标签