当前位置: 首页 > news >正文

关闭页面强制清除所有循环定时器

背景:

关闭页面强制清除所有循环定时器。在关闭页面的生命周期函数中,清除循环定时器。

如果只有一个循环定时器,使用clearInterval(timeInterval定时器名称),如下:

  • 首先,为每个定时器创建一个变量,并使用setInterval()函数将定时器赋值给变量。
  • 其次,当你想停止定时器时,使用clearInterval()函数并传入相应的定时器变量作为参数。这将停止该定时器的执行。

通过这种方式,我们可以轻松地清除我们已经记录的定时器。然而,在实际的项目中,定时器的管理可能会变得更加复杂。


如果有多个循环定时器,使用for循环清除,如下:

  • 首先,创建一个数组来存储所有的定时器标识符(ID)。
  • 其次,使用setInterval()函数创建定时器时,将每个定时器的ID存储到数组中。
  • 最后,使用循环遍历数组,并使用clearInterval()函数来清除每个定时器。
  • 这种方法的关键是确保所有的定时器 ID 都被记录在 timers 数组中,便于之后统一清理。

timeIntervalArr.forEach((item) => {

  clearInterval(item);

})


暴力清除所有循环定时器,如下:

  • 有时候,我们可能并不知道页面上所有的定时器 ID。这种情况下,可以使用递归的方式清理所有的定时器。
  • 这个方法利用了 JavaScript 的定时器 ID 是递增的特性。通过设置一个无操作的定时器来获取当前最大的定时器 ID,然后递增这个 ID 来清除所有的定时器。

for (let i = 1; i < 1000; i++) {

  clearInterval(i);

}

核心代码:

onBeforeUnmount(() => {timeInterval && clearInterval(timeInterval);for (let i = 1; i < 1000; i++) {clearInterval(i);}timeIntervalArr.forEach((item) => {clearInterval(item);})
});

创建循环定时器的代码:

let timeIntervalArr = [];
let timerIDS = [];
const handleNodeClick = (val) => {console.log('选择摄像头>>>', val);const isOk = timerIDS.includes(val.pid);if (val.type === 100) {if (isOk) {//存在,清除這個定時器clearInterval(timeIntervalArr[val.pid]);timerIDS = timerIDS.filter(item => item !== val.pid);return}timeIntervalArr[val.pid] = setInterval(() => {getTextWdIfone(val, wid);//调接口}, 10 * 1000)timerIDS.push(val.pid);} else {if (aWindow.value === 1) {for (let i = 1; i < 1000; i++) {clearInterval(i);}}}
};

写到这儿。。。实际项目中,根据情况调用清除定时器的方法。

http://www.dtcms.com/a/362265.html

相关文章:

  • Linux 进程间通信(IPC)
  • Android14 init.rc各个阶段的主要操作
  • authentication port-control auto 和 dot1x port-control auto
  • Shell 编程:正则表达式与文本处理器
  • 软考-操作系统-错题收集(1)进程P的页面变换
  • 分布式一致性算法相关
  • 【Audio】切换至静音或振动模式时媒体音自动置 0
  • 基于SpringBoot+MYSQL开发的师生成果管理系统
  • 解锁Git仓库瘦身秘籍,git-sizer真香警告
  • Next.js渲染模式:SSR、SSG与ISR揭秘
  • Python实现点云渲染可视化杂记(直接、彩虹渐变、柱状、饼状和T-SNE赋色)
  • The Algorithmic Foundations of Differential Privacy - 2
  • 8Lane V-by-One HS LVDS FMC Card
  • 【开题答辩全过程】以 智慧药店管理系统的实现与设计为例,包含答辩的问题和答案
  • 基于单片机智能空调/温度控制系统
  • GaussDB 集群故障cm_ctl: can‘t connect to cm_server
  • API安全厂商F5首发后量子加密方案,为企业后量子时代加固防线
  • Java中方法的参数传递
  • TFT屏幕:STM32硬件SPI+DMA+队列自动传输
  • 【无标题】训练、推理适用的数据类型
  • C++ 学习与 CLion 使用:(五)数据类型,包括整型、实型、字符型、转义字符、字符串、布尔型
  • 椭圆曲线的数学基础
  • 【算法专题训练】17、双向链表
  • openEuler2403部署Redis8集群
  • AI推理方法演进:Chain-of-Thought、Tree-of-Thought与Graph-of-Thought技术对比分析
  • Spring 控制器参数注解
  • LangGraph 边(Edge)机制完全指南
  • Java 不支持在非静态内部类中声明静态 Static declarations in inner classes are not supported异常处理
  • 2025我“生发”了『折行』|『内注』|『终端正偿』|『中文负偿』四大“邪术”(前二造福python代码阅读者;后二助力所有艺术人)
  • nrf52840 解锁