解决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 相关文章推荐
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
Jan 22 Javascript
jQuery 数据缓存模块进化史详细介绍
Nov 19 Javascript
window.onload和$(function(){})的区别介绍
Oct 30 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
Jun 05 Javascript
js Calender控件使用详解
Jan 05 Javascript
Javascript动画的实现原理浅析
Mar 02 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
jQuery之动画ajax事件(实例讲解)
Jul 18 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
Sep 26 jQuery
浅析Visual Studio Code断点调试Vue
Feb 27 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 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
德生PL550的电路分析
2021/03/02 无线电
PHP 写文本日志实现代码
2010/05/18 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
php 函数中使用static的说明
2012/06/01 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
react-native之ART绘图方法详解
2017/08/08 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
任课老师推荐信范文
2013/11/24 职场文书
策划主管的工作职责
2013/11/24 职场文书
秋季运动会稿件
2014/01/30 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
同意落户证明
2015/06/19 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android