小程序-关于组件设置定时器setInterval,无法清除定时器

时间:2024-03-10 10:16:53

 

小程序组件中无法清除定时器

1.把定时器设置为全局变量(保存在data里面)

2.在lifetimes-->detached里面清除定时器

lifetimes: {
    attached: function() {
      this.addInterval();
    },
    detached: function() {
      // 在组件实例被从页面节点树移除时执行
      clearInterval(this.data.timeOut)//清除定时器
    },
  },
  methods: {
    addInterval(e){
      //当e==remove时,把原来的定时器删掉
        const {timeNum}=this.properties;
        this.setData({time:timeNum})
        //设置倒计时十秒钟
        if(e!="remove"){
          var timeOut=setInterval(() => {
            if(this.data.time==0||e=="remove") {
            clearInterval(timeOut);
            this.triggerEvent(\'timeEnd\',{},{})
            return
            }
            this.setData({time:this.data.time-1})
          }, 1000);
          this.setData({timeOut:timeOut})
        }
    },