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

【js】JavaScript清除所有(多个)定时器的方法:

文章目录

        • 一、停止单个定时器
        • 二、暂停与恢复定时器
        • 三、使用Promise来管理定时器
        • 四、使用ES6特性管理定时器
        • 五、案例(定时获取页面列表数据)


一、停止单个定时器
#在某些情况下,我们可能只需要停止单个定时器。
#在JavaScript中,我们可以使用clearTimeout()函数停止一个setTimeout()的定时器
#或者clearInterval()函数停止一个setInterval()的定时器。例如:// 创建一个定时器
var timer1 = setTimeout(function() {console.log("Hello world!");
}, 1000);// 停止定时器
clearTimeout(timer1);#当执行clearTimeout(timer1)时,之前创建的定时器就会被停止。
#对于setInterval()的定时器,使用clearInterval()的方法也是类似的。
#需要注意的是,clearTimeout()和clearInterval()函数都需要传入定时器的ID作为参数。
二、暂停与恢复定时器
#除了停止某个特定的定时器之外,有时候我们也需要暂停或者恢复所有的定时器。
#我们可以使用更高级的技术,比如使用闭包或者对象来控制所有的定时器。例如:// 创建一个对象来管理所有的定时器
var timerManager = {timers: [],addTimer: function(timer) {this.timers.push(timer);},pauseTimers: function() {for (var i = 0; i < this.timers.length; i++) {clearTimeout(this.timers[i]);}},resumeTimers: function() {for (var i = 0; i < this.timers.length; i++) {this.timers[i] = setTimeout(this.timers[i].callback, this.timers[i].interval);}}
};// 创建多个定时器
var timer1 = {interval: 1000, callback: function() {console.log("Hello world!");
}};
var timer2 = {interval: 2000, callback: function() {console.log("Goodbye world!");
}};// 添加定时器到管理器
timerManager.addTimer(timer1);
timerManager.addTimer(timer2);// 暂停定时器
timerManager.pauseTimers();// 恢复定时器
timerManager.resumeTimers();#在此示例中,我们使用一个名为timerManager的对象来管理所有的定时器。
#addTimer()方法用于向管理器添加定时器,pauseTimers()方法用于暂停所有的定时器,resumeTimers()方法用于恢复所有的定时器。
#需要注意的是,pauseTimers()方法和resumeTimers()方法都需要遍历定时器数组,然后使用clearTimeout()函数来清除之前创建的定时器。
三、使用Promise来管理定时器
#使用Promise来管理定时器是一种非常高效的方式。
#我们可以通过创建一个Promise来实现定时器并且使用resolve()和reject()方法来控制定时器的行为。例如:// 创建一个函数来包装setTimeout
function wait(time) {return new Promise(function(resolve, reject) {setTimeout(resolve, time);});
}// 使用Promise管理定时器
Promise.all([wait(1000), wait(2000)]).then(function() {console.log("Both timers complete!");
});#在此示例中,我们创建一个名为wait的函数,该函数返回一个Promise。
#在这个Promise中,我们使用setTimeout函数来实现一个定时器,并且使用resolve()方法来告诉Promise,当定时器触发时执行resolve()回调函数。
#最后,我们使用Promise.all()方法来等待所有的定时器完成,并且在完成时触发回调函数。这种方式相比于使用定时器数组进行管理,更加简洁和高效。
四、使用ES6特性管理定时器
#在ES6及以上版本的JavaScript中,我们可以使用更加现代的方式来管理定时器。例如,使用Set和箭头函数。// 创建Set来管理定时器
const timers = new Set();// 创建多个定时器
const timer1 = setTimeout(() => {console.log("Hello world!");
}, 1000);
const timer2 = setTimeout(() => {console.log("Goodbye world!");
}, 2000);// 将定时器添加到Set
timers.add(timer1);
timers.add(timer2);// 暂停所有的定时器
for (const timer of timers) {clearTimeout(timer);
}
五、案例(定时获取页面列表数据)
  1. 定时器会生成多个,即有多个定时器id,需要清除不需要的的定时器
  2. 菜单没有选中当前页面,定时器也不需要
<script>
// 创建Set来管理定时器
const timers = new Set();export default {data() {return {}},created() {this.loadData()},watch: {'$route': function (val) {if (!val.path.includes("当前页面的path")) {// 暂停所有的定时器for (const timer of timers) { clearTimeout(timer); };}else{this.loadData()}}},beforeDestroy() {// 暂停所有的定时器for (const timer of timers) { clearTimeout(timer); }},methods: {// 获取页面数据loadData() {// 暂停所有的定时器for (const timer of timers) { clearTimeout(timer); }let param = { ...xxx }...API(param).then(res => {....}).finally(() => {let timer = setTimeout(() => { this.init() }, 10000);// 将定时器添加到Settimers.add(timer);})},
}
</script>

相关文章:

【js】JavaScript清除所有(多个)定时器的方法:

文章目录 一、停止单个定时器二、暂停与恢复定时器三、使用Promise来管理定时器四、使用ES6特性管理定时器五、案例&#xff08;定时获取页面列表数据&#xff09; 一、停止单个定时器 #在某些情况下&#xff0c;我们可能只需要停止单个定时器。 #在JavaScript中&#xff0c;我…...

java实现周易64卦并返回对应的卦象(含百度百科链接)

《易经》是中华民族传统思想文化中自然哲学与人文实践的理论根源&#xff0c;是古代汉民族思想、智慧的结晶&#xff0c;被誉为“大道之源”&#xff0c;是古代帝王之学&#xff0c;政治家、军事家、商家的必修之术。 《易经》含盖万有&#xff0c;纲纪群伦&#xff0c;是中华…...

# 算法与程序的灵魂

文章目录 前言算法与程序的关系例子1&#xff1a;冒泡排序例子2&#xff1a;斐波那契数列算法优化与进阶总结 前言 大家好我是艾老虎尤&#xff0c;算法与程序是计算机科学中两个非常重要的概念。算法是解决问题的方法和步骤&#xff0c;而程序是算法的具体实现。在计算机科学…...

2023-10-21 美团2024秋招后端开发岗笔试题

1 考察dfs和拓扑排序 1.1 题目描述&#xff08;如果拓扑排序不清楚可以去做一下lc 207. 课程表&#xff09; 1.2 答案 import java.util.*;public class Meituan {static int m,n;public static void main(String[] args) {Scanner in new Scanner(System.in);m in.nextInt…...

汽车托运是怎样收费

汽车托运是如何收费的呢?一般来说&#xff0c;汽车托运的费用是会随着每公里来增加&#xff0c;目前的托运的每公里费用在1.2-1.8元之间&#xff0c;托运的距离越远那么它的托运单价费用就会越低&#xff0c;如果你运气好找到一家在搞活动的汽车托运公司&#xff0c;那么你就算…...

使用docker-compose私有化部署 GitLab

在软件开发和协作过程中&#xff0c;版本控制是至关重要的一环。GitLab 是一个功能强大的开源平台&#xff0c;提供了完整的代码管理功能&#xff0c;包括版本控制、问题跟踪以及持续集成等。这使得团队能够更高效地协作开发。前段时间翻阅笔记时&#xff0c;偶然发现了之前公司…...

Vue项目引入百度统计的正确操作步骤,亲测有效!

1、平台获取统计代码 2、在head和body中分别添加以下代码 head: <script>var _hmt _hmt || [];</script>body: <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js…...

Keras中model.evaluate() 返回的是 loss value 和 metrics values

Keras官方文档&#xff1a; https://keras.io/models/model/#evaluate Keras中model.evaluate() 返回的是 损失值和训练时选定的指标值&#xff08;例如&#xff0c;[AUC, , accuracy]&#xff09;。 训练时选定的指标值是指model.compile()里面metrics后面的值&#xff0c;ev…...

CSRF跨域请求伪造

1.SSRF服务端请求伪造&#xff08;外网访问内网&#xff09; SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下&#xff0c;SSRF是要目标网站的内部系统。&#xff08;因为他是从内部系统访问的&#xf…...

LeetCode 1465. 切割后面积最大的蛋糕:纵横分别处理

【LetMeFly】1465.切割后面积最大的蛋糕&#xff1a;纵横分别处理 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/ 矩形蛋糕的高度为 h 且宽度为 w&#xff0c;给你两个整数数组 horizontalCut…...

YTM32的增强型定时器eTMR外设模块详解

文章目录 eTMR外设简介eTMR工作机制系统框图引脚与信号计数器与时钟源输出比较模式PWM模式通道配对通道对的互补输出&#xff08;Complementary Mode&#xff09;双缓冲输出PWM&#xff08;Double Switch&#xff09;错误检测机制&#xff08;Fault Detection&#xff09; 输入…...

40.查找练习题(王道2023数据结构第7章)

试题1&#xff08;王道7.2.4节综合练习5&#xff09;&#xff1a; 写出折半查找的递归算法。 #include<stdio.h> #include<stdlib.h> #include<string.h>#define MAXSIZE 10 #define ElemType int #define Status inttypedef struct{int data[MAXSIZE]; /…...

Segmentation fault 的bug解决

一&#xff0c;Segmentation fault 的bug解决 问题描述&#xff1a;自己在使用CPU上调试完代码之后&#xff0c;可以稳定运行&#xff0c;有输出结果。 但是把数据和模型加载上GPU之后&#xff0c;出现了报错。 Segmentation fault (core dumped) 搜了一下可能存在的原因&…...

【Python机器学习】零基础掌握BaggingRegressor集成学习

如何提升回归模型的稳定性和准确性? 在实际生活中,比如房价预测,经常会遇到一种情况:有大量的特征和样本数据,但模型的预测准确度仍然不尽人意。这时候,单一的模型(如支持向量机回归)可能表现得并不够好。 考虑到这个问题,解决方案可能是使用集成方法,特别是Baggin…...

麒麟KYLINOS通过命令行配置kysec的防火墙

原文链接&#xff1a;麒麟KYLINOS通过命令行配置kysec的防火墙 hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇使用命令行配置kysec的防火墙的文章&#xff0c;通过本篇文章的学习&#xff0c;大家可以了解到图形化界面中的防火墙信息是如何生成的&#xff0c;为后期…...

磁盘监控:告警时发送邮件

1.配置邮箱 1.编辑邮箱配置文件 vim /etc/mail.rc2.在末尾输入自己的邮箱配置&#xff0c;以163邮箱为例 #开启ssl set ssl-verifyignore #证书目录&#xff0c;下方为centos系统证书默认位置&#xff0c;也自行生成证书并指定 set nss-config-dir/etc/pki/nssdb # 配置的第…...

【HarmonyOS】元服务卡片router实现跳转到指定页面并传动态参数

【关键字】 元服务卡片、router跳转不同页面、传递动态参数 【写在前面】 本篇文章主要介绍开发元服务卡片时&#xff0c;如何实现从卡片中点击事件跳转到指定的应用内页面&#xff0c;并传递参数接受参数功能。此处以JS UI开发服务卡片为例&#xff0c;JS卡片支持组件设置ac…...

Centos安装RabbitMQ,JavaSpring发送RabbitMQ延迟延时消息,JavaSpring消费RabbitMQ消息

1&#xff0c;版本说明 erlang 和 rabbitmq 版本说明 https://www.rabbitmq.com/which-erlang.html 确认需要安装的mq版本以及对应的erlang版本。 2&#xff0c;下载安装文件 RabbitMQ下载地址&#xff1a; https://packagecloud.io/rabbitmq/rabbitmq-server Erlang下载地…...

leetcode:1323. 6 和 9 组成的最大数字(python3解法)

难度&#xff1a;简单 给你一个仅由数字 6 和 9 组成的正整数 num。 你最多只能翻转一位数字&#xff0c;将 6 变成 9&#xff0c;或者把 9 变成 6 。 请返回你可以得到的最大数字。 示例 1&#xff1a; 输入&#xff1a;num 9669 输出&#xff1a;9969 解释&#xff1a; 改变…...

SpringBoot集成Redis Cluster集群(附带Linux部署Redis Cluster高可用集群)

目录 一、前言二、集成配置2.1、POM2.2、添加配置文件application.yml2.3、编写配置文件2.4、编写启动类2.5、编写测试类测试是否连接成功 一、前言 这里会使用到spring-boot-starter-data-redis包&#xff0c;spring boot 2的spring-boot-starter-data-redis中&#xff0c;默…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...