解决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 相关文章推荐
破除一些网站复制、右键限制
Nov 04 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
Jul 01 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
Jan 22 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
JS JQUERY实现滚动条自动滚到底的方法
Jan 09 Javascript
mint-ui 时间插件使用及获取选择值的方法
Feb 09 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
Nov 04 Javascript
vue+animation实现翻页动画
Jun 29 Javascript
Javascript var变量删除原理及实现
Aug 26 Javascript
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
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
php打造属于自己的MVC框架
2012/03/07 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
详解python Todo清单实战
2018/11/01 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
环保倡议书
2014/04/14 职场文书
国际贸易系求职信
2014/08/09 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
经营场所证明范本
2015/06/19 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
小程序实现文字循环滚动动画
2021/06/14 Javascript