JS中调用setInterval无效的情况怎样解决
Admin 2022-05-23 群英技术资�
使用场景:我在函数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>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容�
猜你喜欢
怎么利用配置文件来管理多� Node.js 进程?本篇文章给大家介绍一下PM2用配置文件管理多个Node.js项目的方法,希望对大家有所帮助�
怎么利用node生成word文档?下面本篇文章给大家介绍一下使用node生成word文档的方法,分享一个实用库,聊聊该库的使用方法,希望对大家有所帮助�
这篇文章主要介绍了在JavaScript中查找字符串中最长单词的三种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
用jquery实现省市区联动的方法�1、创建一个HTML示例文件�2、在js文件中通过�$(function() {for(var i = 0; i < prvo.length; i++) {...}}”方法实现省市区联动即可�
在开发后台管理系统的时�,很多地方都要用到导出excel 表格,比如将table中的数据导出到本�,这篇文章主要给大家介绍了关于Vue导出Excel功能的相关资�,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网�
7x24小时售前�400-678-4567
7x24小时售后�0668-2555666
24小时QQ客服
群英微信公众�
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所�
增值电信经营许可证 : B1.B2-20140078