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

JavaScript定时器详解:setTimeout与setInterval的使用与注意事项

在JavaScript中,定时器用于在指定的时间间隔后或周期性地执行代码。JavaScript 提供了两种主要的定时器函数:setTimeoutsetInterval。以下是它们的详细解释和实现方式:

1. setTimeout

setTimeout 函数用于在指定的毫秒数后执行一次函数。

语法

setTimeout(function, delay, [param1, param2, ...])
  • function:要执行的函数。
  • delay:设置延迟执行的时间(以毫秒为单位)。
  • [param1, param2, ...](可选):要传递给函数的参数。

示例

setTimeout(function() {console.log("这条消息将在3秒后显示");
}, 3000);

或者使用箭头函数:

setTimeout(() => {console.log("这条消息将在3秒后显示");
}, 3000);

2. setInterval

setInterval 函数用于每隔指定的毫秒数重复执行函数。

语法

setInterval(function, delay, [param1, param2, ...])
  • function:要执行的函数。
  • delay:设置重复执行的时间间隔(以毫秒为单位)。
  • [param1, param2, ...](可选):要传递给函数的参数。

示例

setInterval(function() {console.log("这条消息将每隔2秒显示一次");
}, 2000);

或者使用箭头函数:

setInterval(() => {console.log("这条消息将每隔2秒显示一次");
}, 2000);

清除定时器

对于使用 setTimeoutsetInterval 创建的定时器,可以使用 clearTimeoutclearInterval 函数来清除它们,从而停止定时执行。

清除 setTimeout

let timeoutId = setTimeout(() => {console.log("这条消息将不会显示,因为定时器被清除了");
}, 3000);// 清除定时器
clearTimeout(timeoutId);

清除 setInterval

let intervalId = setInterval(() => {console.log("这条消息将只显示一次,因为定时器被清除了");
}, 1000);// 在1秒后清除定时器
setTimeout(() => {clearInterval(intervalId);
}, 1000);

注意事项

  1. 时间精度setTimeoutsetInterval 的时间间隔并不总是精确的,因为它们受到JavaScript事件循环和浏览器实现的影响。
  2. 最小延迟:浏览器通常有一个最小的定时器延迟(通常为4毫秒),因此设置的时间间隔小于这个值将会被提升到最小延迟。
  3. 内存管理:确保在不需要时清除定时器,以避免内存泄漏和不必要的资源消耗。
  4. 嵌套使用:在定时器的回调函数中再次设置定时器时要小心,这可能会导致难以调试和维护的代码。
  5. 异步性setTimeoutsetInterval 的回调函数是在异步队列中执行的,这意味着它们不会阻塞其他代码的执行。
http://www.lryc.cn/news/479532.html

相关文章:

  • CSS——选择器、PxCook软件、盒子模型
  • Mysql 大表limit查询优化原理实战
  • 在vscode中开发运行uni-app项目
  • 【JavaEE初阶 — 多线程】Thread的常见构造方法&属性
  • ctfshow(316)--XSS漏洞--反射性XSS
  • ubuntu22.04安装conda
  • D58【python 接口自动化学习】- python基础之异常
  • Java项目实战II基于Spring Boot的便利店信息管理系统(开发文档+数据库+源码)
  • Java-日期计算工具类DateCalculator
  • 单片机串口接收状态机STM32
  • ipv6的 fc00(FC00::/7) 和 fec0(FEC0::/10)
  • Chat GPT英文学术写作指令
  • 超详细Pycharm安装汉化教程,Python环境配置和使用指南,Python零基础入门看这个就够了!
  • react-native:解决使用webView后部分场景在安卓10崩溃闪退问题
  • 大数据工具 flume 的安装配置与使用 (详细版)
  • 智慧城市智慧城市项目方案-大数据平台建设技术方案(原件Word)
  • C语言比较两个字符串是否相同
  • 丹摩征文活动|FLUX.1图像生成模型:AI工程师的创新实践
  • ZABBIX API获取监控服务器OS层信息
  • SpringBoot基础系列学习(五):JdbcTemplate 访问数据库
  • JavaEE-多线程初阶(3)
  • 从入门到精通:如何在Vue项目中有效运用el-image-viewer
  • uniapp组件实现省市区三级联动选择
  • 【C++】异常处理机制(对运行时错误的处理)
  • C++ boost steady_timer使用介绍
  • JVM 由多个模块组成,每个模块负责特定的功能
  • ORACLE批量插入更新如何拆分大事务?
  • kafka+zookeeper的搭建
  • Spark中的宽窄依赖
  • 安装和运行开发微信小程序