解决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 相关文章推荐
ASP.NET中基于JQUERY的高性能的TreeView补充
Feb 23 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 Javascript
JavaScript数组和循环详解
Apr 27 Javascript
jQuery实现自定义右键菜单的树状菜单效果
Sep 02 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
Oct 16 Javascript
基于jquery实现表格内容筛选功能实例解析
May 09 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
May 16 Javascript
修改ligerui 默认确认按钮的方法
Dec 27 Javascript
BootStrap表单控件之文本域textarea
May 23 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
浅谈微信小程序列表埋点曝光指南
Oct 15 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
论建造顺序的重要性
2020/03/04 星际争霸
自己前几天写的无限分类类
2007/02/14 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
PHP内核探索之变量
2015/12/22 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
js右键菜单效果代码
2007/07/21 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
vue router动态路由设置参数可选问题
2019/08/21 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
Python json转字典字符方法实例解析
2020/04/13 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
村抢险救灾方案
2014/05/09 职场文书
留学推荐信范文
2014/05/10 职场文书
企业诚信承诺书
2014/05/23 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年残联工作总结
2014/11/21 职场文书
诚信承诺书
2015/01/19 职场文书
专项资金申请报告
2015/05/15 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书