解决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 相关文章推荐
js动态创建上传表单通过iframe模拟Ajax实现无刷新
Feb 20 Javascript
网页运行时提示对象不支持abigimage属性或方法
Aug 10 Javascript
jQuery 和 CSS 的文本特效插件集锦
Dec 12 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
May 01 Javascript
JQuery中DOM加载与事件执行实例分析
Jun 13 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
jquery拖拽排序简单实现方法(效果增强版)
Feb 16 Javascript
JS从一组数据中找到指定的单条数据的方法
Jun 02 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
解决vue打包css文件中背景图片的路径问题
Sep 03 Javascript
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 flv视频时间获取函数
2010/06/29 PHP
php生成curl命令行的方法
2015/12/14 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
2016/12/17 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
处理Python中的URLError异常的方法
2015/04/30 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
python检测服务器端口代码实例
2019/08/31 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
自我鉴定书范文
2013/10/02 职场文书
跟单文员岗位职责
2014/01/03 职场文书
活动策划邀请函
2014/02/06 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
餐厅总厨求职信
2014/03/04 职场文书
乔迁之喜主持词
2014/03/27 职场文书
生物技术专业求职信
2014/06/10 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python