解决js中的setInterval清空定时器不管用问题


Posted in Javascript onNovember 17, 2020

使用场景:我在函数A中调用定时器函数,定时器是单独写的一个函数

原因:页面加载时我调用了1次函数A,然后又单独调用了一次定时器函数,导致调用了2次setInterval(),导致有setInterval_id有2个值。

通过打印定时器的值发现的问题。

clearInterval()只关闭了其中一个setInterval_id,另一个setInterval_id还会启动setInterval()。

解决方法:把单独调用的定时器函数去掉。

补充知识:js vue中setTimeout无法通过clearTimeout清除问题

在异步清除中,利用vue 中data存放setTimeout的标识进行清除时,无法清除。则需要在函数前加上window.即可

如window.setTimeout与window.clearTimeout

具体代码如下

精简后的代码。

环境为electron-vue 渲染进程异步获取主进程上html并渲染到页面、过程中需要有loading的显示。

setTimeout 与clearTimeout 未加window时,this.timeOutLoading事件总会被触发。

<template>
<div id="dev">
    <el-tabs v-model="activeName" @tab-click="handleClick" v-loading="loading">
    <el-tab-pane label="文档" name="first">
      <div v-html="html"></div>
    </el-tab-pane>
     <el-tab-pane label="设置" name="second">
      <v-devCard></v-devCard>
    </el-tab-pane>
    </el-tabs>
</div>
</template>

<script>
  const {ipcRenderer:ipc} = require('electron');

export default {

  data(){
    return{
      activeName: 'second',
      html:'',
      loading:false,
      timeOutLoading:0
    }
  },
  methods:{
    handleClick(tab, event) {
    if(tab.name == 'first' && this.loading == false){
      if(this.timeOutLoading != 0){
        window.clearTimeout(this.timeOutLoading);
      }

      this.html = "<div style='text-align:center; height:200px; line-height:200px;'>加载中...</div>";
      this.loading = true;
      this.timeOutLoading = window.setTimeout(() => {
        if(this.loading == true){
          this.loading = false;
          this.html = "<div style='text-align:center; height:200px; line-height:200px;'>加载超时</div>";
        } 
      }, 3000);

      window.setTimeout(() => {
        ipc.send("getPage");
      }, 500);
       
    }
   }
  },
  mounted(){
    ipc.on('getPage-reply', (event, arg) => {
        if(this.timeOutLoading != 0){
          window.clearTimeout(this.timeOutLoading);
          this.timeOutLoading = 0;
        }      
        this.loading = false;
        this.html = arg; 
      });
  }
}
</script>

以上这篇解决js中的setInterval清空定时器不管用问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript入门学习书籍推荐
Jun 12 Javascript
jQuery中setTimeout的几种使用方法小结
Apr 07 Javascript
js 判断js函数、变量是否存在的简单示例代码
Mar 04 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
May 28 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
Aug 15 Javascript
Bootstrap每天必学之警告框插件
Apr 26 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
Apr 29 Javascript
JS读写CSS样式的方法汇总
Aug 16 Javascript
jquery 中toggle的2种用法详解(推荐)
Sep 02 Javascript
浅谈js中同名函数和同名变量的执行问题
Feb 12 Javascript
three.js绘制地球、飞机与轨迹的效果示例
Feb 28 Javascript
jQuery层叠选择器用法实例分析
Jun 28 jQuery
springboot+vue实现文件上传下载
Nov 17 #Vue.js
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 #Vue.js
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 #Vue.js
Vue项目利用axios请求接口下载excel
Nov 17 #Vue.js
vue实现下载文件流完整前后端代码
Nov 17 #Vue.js
vue+iview实现文件上传
Nov 17 #Vue.js
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 #Vue.js
You might like
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
浅谈PHP语法(1)
2006/10/09 PHP
实用函数7
2007/11/08 PHP
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
php目录拷贝实现方法
2015/07/10 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
Jquery 设置标题的自动翻转
2009/10/03 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
Python中的异常处理学习笔记
2015/01/28 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
2016/10/08 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
详解python做UI界面的方法
2019/02/27 Python
Python语言进阶知识点总结
2019/05/28 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
《多彩的民间艺术》教学反思
2016/02/16 职场文书
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server