当前位置: 首页 > 知识库问答 >
问题:

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

归俊
2023-06-12
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 以及 关闭了定时器--都执行了很多次,正常期望 同时执行一次

共有2个答案

文喜
2023-06-12
function checkOfflineStatus () {
    console.log('开启了定时器--');
    if (!this.$store.state.common.isConfirmOnline1) {
      clearInterval(this.timer);
      this.timer = null
      console.log('关闭了定时器--');
      return 
    }
    IpuMobile.offlineStatus([], res => {
      const isConfirmOnline1 = this.getOnlineResult(res);
      console.log('定时器获取在线结果', isConfirmOnline1);
      this.$store.commit('common/setIsOffline', !isConfirmOnline1);
      submitCacheContent();
    });
  }
司徒杜吟
2023-06-12

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);
  }

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

 类似资料:
  • 本文向大家介绍深入剖析浏览器退出之后php还会继续执行么,包括了深入剖析浏览器退出之后php还会继续执行么的使用技巧和注意事项,需要的朋友参考一下 前提:这里说的是典型的lnmp结构,nginx+php-fpm的模式 如果我有个php程序执行地非常慢,甚至于在代码中sleep(),然后浏览器连接上服务的时候,会启动一个php-fpm进程,但是这个时候,如果浏览器关闭了,那么请问,这个时候服务端的这

  • 我想知道是否有人知道s3前缀到底是什么,以及它如何与amazon发布的s3速率限制交互: AmazonS3自动扩展到高请求率。例如,您的应用程序在一个bucket中每个前缀每秒至少可以实现3500个PUT/POST/DELETE和5500个GET请求。bucket中前缀的数量没有限制。 虽然这很清楚,但我不太确定前缀是什么? 前缀需要分隔符吗? 如果我们有一个存储桶,将所有文件存储在“根”级别(完

  • 我使用的是和。我需要在一个动作被发送后重定向。

  • 我正在使用VS代码来编辑和运行Android项目。模拟器将打开,我看到程序启动,然后是程序的编译和运行。但是,在关闭了Android模拟器和VS代码之后,OpenJDK继续运行。 这是正常行为吗?有没有办法在模拟器/VSC退出后关闭OpenJDK JRE? 我主要关心的是电池寿命,因为我正在使用笔记本电脑。 系统:Windows 10 Pro(1909) Visual Studio代码版本:1.4

  • 问题内容: 任何人都可以告诉如何维护会话(使用PHP),以便即使重新启动浏览器后也可以保留会话中包含的内容并且可以访问该会话。 通常,会话会随着浏览器的关闭而过期,但是我希望不要关闭该会话,以便下次使用浏览器时可以访问该会话数据。 问题答案: 用于在启动会话之前为会话cookie提供非零的生存期,或设置为非零。

  • Since 10.0.18 startContinuousLocation startContinuousLocation 持续获取当前设备的经纬度信息 支持版本:从10.0.18开始 使用方法 AlipayJSBridge.call('startContinuousLocation', function(result) { alert(JSON.stringify(result)); });