解决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代码
Dec 01 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
Mar 01 Javascript
jQuery操作 input type=checkbox的实现代码
Jun 14 Javascript
jQuery滚动加载图片效果的实现
Mar 06 Javascript
jquery图片不完全按比例自动缩小的简单代码
Jul 29 Javascript
jquery可定制的在线UEditor编辑器
Nov 17 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
Jun 03 Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 Javascript
整理关于Bootstrap警示框的慕课笔记
Mar 29 Javascript
nginx部署访问vue-cli搭建的项目的方法
Feb 12 Javascript
vue 的 solt 子组件过滤过程解析
Sep 07 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
Aug 31 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递归算法和应用方法介绍
2013/04/15 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
理解JS绑定事件
2016/01/19 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
django 创建过滤器的实例详解
2017/08/14 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Python求凸包及多边形面积教程
2020/04/12 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
经典大学生求职信范文
2014/01/06 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
边城读书笔记
2015/06/29 职场文书
结婚幸福感言
2015/08/01 职场文书
小学生运动会广播
2015/08/19 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS