解决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加解密功能页面
Dec 12 Javascript
JavaScript Event学习第六章 事件的访问
Feb 07 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
JS按字节截取字符长度实例
Nov 20 Javascript
javascript密码强度校验代码(两种方法)
Aug 10 Javascript
javascript实现方法调用与方法触发小结
Mar 26 Javascript
js 连续赋值的简单实现
Jun 13 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
vue中遇到的坑之变化检测问题(数组相关)
Oct 13 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 Javascript
javascript 模块依赖管理的本质深入详解
Apr 30 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根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
smarty内置函数section的用法
2015/01/22 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
jquery replace方法去空格
2017/05/08 jQuery
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
解读! Python在人工智能中的作用
2017/11/14 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
python的pip安装以及使用教程
2018/09/18 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
python脚本第一行如何写
2020/08/30 Python
机关财务管理制度
2014/01/17 职场文书
法学院方阵解说词
2014/01/29 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
购房意向书
2014/04/01 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
避暑山庄导游词
2015/02/04 职场文书
业务员岗位职责范本
2015/04/03 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
Anaconda配置各版本Pytorch的实现
2021/08/07 Python