解决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 相关文章推荐
60个很实用的jQuery代码开发技巧收集
Dec 15 Javascript
JAVA四种基本排序方法实例总结
Jul 24 Javascript
js实现简洁的TAB滑动门效果代码
Sep 06 Javascript
基于JavaScript实现仿京东图片轮播效果
Nov 06 Javascript
纯JS代码实现气泡效果
May 04 Javascript
微信小程序之拖拽排序(代码分享)
Jan 21 Javascript
layui 表格的属性的显示转换方法
Aug 14 Javascript
JS实现的RC4加密算法示例
Aug 16 Javascript
微信小程序实现顶部导航特效
Jan 28 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
May 05 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
Aug 08 Javascript
jQuery实现简单聊天室
Feb 08 jQuery
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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
php中static和const关键字用法分析
2016/12/07 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
Python实现的Excel文件读写类
2015/07/30 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
使用numba对Python运算加速的方法
2018/10/15 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
在Python中使用turtle绘制多个同心圆示例
2019/11/23 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
PyQt5实现画布小程序
2020/05/30 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
师范应届毕业生自荐信
2013/11/18 职场文书
大学本科生的个人自我评价
2013/12/09 职场文书
股东大会通知
2015/04/24 职场文书
催款函范本大全
2015/06/24 职场文书
教师节随笔
2015/08/15 职场文书
党章学习心得体会2016
2016/01/14 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
HAM-2000摩机图
2021/04/22 无线电
Python实现简繁体转换
2021/06/07 Python