小程序清除定时器clearinterval无效的原因

微信小程序如果使用了setInterval计时器,默认退回上一页或关闭页面并不会清空定时器clearinterval,这会造成手机过热、无限计时、甚至小程序挂死的情况。

小程序clearinterval无效解决

小程序clearinterval清除定时器无效,原因是定时器使用与清除方法不对导致的,我们应将定时器绑定变量,这样在关闭页面清空定时器clearinterval时,才能找到定时器ID。正确的使用方式如下:

data: {
    //设置定时器
    loanTime: ''
  },
  //定时器方法
  timer: function() {
    let that = this
    that.data.loanTime = setInterval(function() {
      that.setData({
        nowTime: '运行中'
      })
    }, 1000)
  },
  //实时定时器
  onShow: function() {
    this.timer()
  },
  //清除定时器
  onUnload: function() {
    clearInterval(this.data.loanTime)
  },

检查微信小程序定时器无法清除的原因

我们可在onUnload方法中打印定时器方法

onUnload: function() {
    console.log(this.data.loanTime)
  },

如果打印出的是int类型ID,说明clearinterval方法找到了定时器,即能正确清除定时器,如果打印出的为空/报错或undefined,则说明定时器未找到,失败,这样就是使用方法有问题,修改为上边提供的方法即可。