首页 > 其他分享 >五月踩坑指南之clearInterval()定时器不起效果

五月踩坑指南之clearInterval()定时器不起效果

时间:2024-05-31 15:00:07浏览次数:13  
标签:定时器 setInterval clearInterval timer 不起 timerList null

clearInterval定时器不起效果

问题代码

let timer=null
timer=setInterval(()=>{执行的方法},1000)
timer=setInterval(()=>{执行的方法},1000)
if (timer) {
clearInterval(this.timer)
timer = null;
}

此时,我们会发现页面仍有定时器内的方法在调用,这是为什么呢?

第二个函数的定时器覆盖了第一个,所以第一个定时器永远也没有办法移除了
所以当一个定时器可能会被多次调用的时候,只清理一次肯定会出现没有清理完全的情况,这时候就会出现“clearInterval不起作用的情况

解决方案:将定时器增加到数组内,循环清除

   let timer = null;
   let timerList = [];
   timer = window.setInterval(function() {
		console.log("开始了")
	}, 2000);
   timerList.push(timer)
 
	if (timer) {
		timerList.forEach((item, index) => {
			clearInterval(item);
		})
		timerList = [];
		timer = null;
	}

另外的方案

在其他地方看到,实验了并未生效,但其他人实现了,可以一试,如果生效比第一种简洁。

// 将 clearInterval() 换成 window.clearInterval() 即可
 let timer=null
timer=setInterval(()=>{执行的方法},1000)
timer=setInterval(()=>{执行的方法},1000)
if (timer) {
  window.clearInterval(this.timer)
  timer = null;
}

标签:定时器,setInterval,clearInterval,timer,不起,timerList,null
From: https://blog.csdn.net/weixin_43787651/article/details/139352915

相关文章

  • JetpackCompose Material3 按钮边框覆盖不起作用
    如标题所述:无法覆盖我的Button可组合按钮的边框描边。下面是我自定义的Button,我如何通过传递border:BorderStroke参数来调用可组合按钮,以及显示其外观的图片。@ComposablefunCustomButtonPrimary(onClick:()->Unit、shape:=null、modifier:modifier=Mod......
  • 我的 Django 注册页面重定向不起作用
    我正试图为我的Django项目制作一个注册页面。当我编译注册表单时,它出现了图片中的错误,因为它试图转到以下路径(hedoublesusers/register):localhost/users/register/users/register/。我的代码如下:......
  • 准备电赛——CCSMSP430F5529标准库——定时器定时多少秒以及定时中断的写法
    中断向量TIMERx_A0_VECTOR是CCR0的中断向量    (第一个引脚)TIMERx_A1_VECTOR是TAIV的中断向量#defineTIMER2_A1_VECTOR(43*1u)/*0xFFD6Timer2_A5CC1-4,TA*/#defineTIMER2_A0_VECTOR(44*1u)......
  • 定时器组件设计方案
    层级时间轮实现高性能定时器此篇介绍时间轮,它的时间复杂度是最优的,插入、查找(最小)、删除都是O(1),很恐怖的性能这里示例一个三层时间轮,模拟时钟表盘的运作方式,便于理解且性能不低设计思路:1.根据定时任务的超时时间,按超时时间范围存入不同的链表中,处于同一个链表的任务的超......
  • Unity制作一个定时器Timer
    Timer和TimerManager代码usingSystem.Collections;usingUnityEngine;publicclassTimer:MonoBehaviour{publicdelegatevoidNotifier();publicNotifieronTimer;publicNotifieronTimerReset;publicNotifieronTimerComplete;publicfl......
  • flutter 定时器
    Timer?_timer;varperiodicTime="".obs;initTimer({requiredintcreateTime,requiredintduration})async{_timer=Timer.periodic(constDuration(seconds:1),(timer)async{DateTimecurrentTime=DateTime.now();varnow=(currentT......
  • 看门狗,定时器是什么
    它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将单片机复位,当看门狗没有被定时清零时,将引起复位几乎所有的嵌入式操作系统都有看门狗任务,它的主要功能是防止系统死掉或者陷入死循环。也就是每个一定的时间就会执行看门狗任务,以reset系统.看门狗其实就是......
  • 记录一次定时器报错
    报错前因后果:我现在使用Winform开发上位机程序,读取PLC传递过来的CT,1、我将定时器方法InitTimerTick();写在构造器或者Load事件起作用2、如果写在后台线程不起作用,也不报错,我打断点查询的时候,发现InitCommonRegion方法没有执行,我向上查找,最终断点打在timer.Tick+=newEventHa......
  • requestAnimationFrame模拟定时器
    const{ myInterval,clearMyInterval}=(function(){ //存放系统中的定时器id lettimerIdMap={num:0} functionmyInterval(callback,interval){ //每设置一次定时器,num++代表系统中有num个自定义的定时器 ......
  • 在PLC的扫描特性下,FOR循环里面套IF或者定时器会发生什么?
    1.为什么会提出这个题目在PLC指令的执行过程中,FOR循环会在每个扫描周期执行完一个循环,然后程序才会接着往下扫描在PLC指令的执行过程中,IF判断会在每次扫描中判断一次条件,满足则进入执行体,不满足则跳出IF把IF放在FOR循环里面,会导致循环体执行时间过长,或者其他问题吗?(答案是不会......