定时器开启之后,触发关闭后定时器的内容还会持续执行多次是什么原因?

作者站长头像
站长
· 阅读数 20
if (!isConfirmOnline) {
  this.timer = setInterval(checkOfflineStatus.bind(this), OFFLINE_STATUS_INTERVAL);
}

function checkOfflineStatus () {
  console.log('开启了定时器--');
  IpuMobile.offlineStatus([], res => {
    let isConfirmOnline1 = this.getOnlineResult(res);
    console.log('定时器获取在线结果', isConfirmOnline1);
    this.$store.commit('common/setIsOffline', !isConfirmOnline1);
    if (isConfirmOnline1) {
      clearInterval(this.timer);
      this.timer = null
      console.log('关闭了定时器--');
      // 提交数据
      submitCacheContent();
    }
  });
}

引用日志发现 定时器获取在线结果--true 以及 关闭了定时器--都执行了很多次,正常期望 同时执行一次

回复
1个回答
avatar
test
2024-07-02

shodata:true function checkOfflineStatus () {

    if(!this.shodata) return 
    this.shodata=false
    console.log('开启了定时器--');
    IpuMobile.offlineStatus([], res => {
      let isConfirmOnline1 = this.getOnlineResult(res);
      console.log('定时器获取在线结果', isConfirmOnline1);
      this.$store.commit('common/setIsOffline', !isConfirmOnline1);
      if (isConfirmOnline1) {
        clearInterval(this.timer);
        this.timer = null
        console.log('关闭了定时器--');
        // 提交数据
        submitCacheContent();
      }
    });
    setTimeout(() => {
        this.shodata=true
  }, 1000);
  }

这样你试试还会触发不 你是不是做了双重监造成的

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容