收藏
回答

微信小程序使用定时器之后无法清除?再次触发时候定时器跑的飞快,多点几次,倒计时就跳着跑,请大佬指点

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

2 个回答

  • 微盟
    微盟
    2021-12-18

    错误在于你把that.setData({ interval: timer })放到定时器内部了,应该放到定时器外面,不然每过一秒都会重新赋值,而且这是异步的。在你连续多次执行这个countDown时。最开始清除的可能就不是上一次赋值的timer了。

    2021-12-18
    有用
    回复 1
    • 2021-12-18
      我之前试过写在外面也是不行的,反正第二次或者之后再次触发,倒计时变得很快
      2021-12-18
      回复
  • 加肥猫
    加肥猫
    2021-12-17

    clearInterval(that.data.interval)

    2021-12-17
    有用
    回复 12
    • 发表于移动端
      2021-12-17
      什么意思,里面的那个清除是因为我在外面声明的变量,第一次进方法时候进行清除就是你写的呀
      2021-12-17
      回复
    • 加肥猫
      加肥猫
      2021-12-17回复
      你写个代码片段?我帮你调试看看
      2021-12-17
      回复
    • 发表于移动端
      2021-12-17回复加肥猫
        countDown(){     let that = this;     if(that.data.interval){      clearInterval(that.data.interval)       that.setData({         interval:null       })     }     console.log(this.data.interval)     let timer = setInterval(() => {       let countDownNum = clone(that.data.wait);       if (countDownNum < 1) {         that.setData({           wait: 0,           interval:null         })         clearInterval(timer)       }else{         countDownNum--;         that.setData({           wait: countDownNum,           //interval: timer         })       }     }, 1000);     that.setData({       interval: timer     })     console.log(this.data.interval)   },
      2021-12-17
      回复
    • 发表于移动端
      2021-12-17回复加肥猫
      这个就是那个方法,问题就是第一次执行玩,再次调用就出问题,或者正在倒计时的时候通过其他点击时间再来触发这个倒计时的时候没有清除之前的定时器
      2021-12-17
      回复
    • 加肥猫
      加肥猫
      2021-12-17回复
      我说的代码片段是这个https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
      2021-12-17
      回复
    查看更多(7)
登录 后发表内容