用计时器倒计时发送验证码,clearIntervalInterval终止不了定时器?

> countTime(time) {
  this.disabled = true
  this.timer = setInterval(()=>{
    time --
    if(time === 0){
      this.text = "发送验证码"
      clearInterval(this.timer)
      this.disabled = false
      return
    }else{
      this.text = time + ' s'
    }
  },1000)
}

点击验证码的时候执行
this.countTime(60);
时间会一直倒计时下去

阅读 2.4k
4 个回答

试了一下,并没有啊,在0的时候结束了倒计时。
clipboard.png

这段代码是没有问题的,我在本地跑了可以停止,有其他地方操作this.timer了?

这段代码看起来没有问题呀,不过有一点不严谨的是,在函数开头最好先清空一下计时器

this.timer && window.clearInterval(this.timer);

clipboard.png

@听风语 试试下面的代码

countTime(time){
  this.disabled = true;
  time--;
  if(time==0){
      this.disabled = false;
      this.text = "发送验证码";
      window.clearTimeout(this.timer);// 这个只是为了 清除 全局环境的定时器,和定时器是否停下来无关
  }else{
    this.text = time + ' s';
    this.timer = setTimeout(()=>{
      this.countTime(time)
    },1000)
  }
}
推荐问题