当前位置:首页 > JavaScript

js实现循环定时

2026-04-07 14:16:10JavaScript

使用 setInterval 实现循环定时

setInterval 是 JavaScript 中用于循环执行指定代码的方法,接收两个参数:回调函数和时间间隔(毫秒)。以下是一个示例:

const intervalId = setInterval(() => {
  console.log('定时任务执行');
}, 1000);

// 清除定时器
// clearInterval(intervalId);

回调函数会每隔 1000 毫秒(1 秒)执行一次。intervalId 用于后续清除定时器。

使用 setTimeout 模拟循环定时

通过递归调用 setTimeout 可以实现类似 setInterval 的效果,但能更灵活控制每次执行的间隔:

js实现循环定时

function runTask() {
  console.log('定时任务执行');
  setTimeout(runTask, 1000);
}

// 启动定时任务
runTask();

// 停止条件示例
// let counter = 0;
// if (counter > 5) return;

这种方式适合需要动态调整间隔或条件停止的场景。

使用 requestAnimationFrame 实现高精度定时

对于需要与浏览器渲染帧同步的循环任务(如动画),可以使用 requestAnimationFrame

js实现循环定时

function animate() {
  console.log('执行动画帧任务');
  requestAnimationFrame(animate);
}

// 启动动画
animate();

默认执行频率与浏览器刷新率(通常 60Hz)一致,可通过计算时间差手动控制间隔。

使用 Web Worker 实现后台线程定时

为避免主线程阻塞,可将定时任务交给 Web Worker:

// main.js
const worker = new Worker('worker.js');
worker.postMessage({ interval: 1000 });

// worker.js
self.onmessage = (e) => {
  setInterval(() => {
    self.postMessage('任务执行');
  }, e.data.interval);
};

适合需要长时间运行且不干扰 UI 的任务。

注意事项

  • 时间间隔并非绝对精确,受 JavaScript 事件循环影响。
  • 清除定时器使用 clearIntervalclearTimeout,避免内存泄漏。
  • 高频任务(如 <16ms)建议用 requestAnimationFrame 替代 setInterval
  • 在 SPA 或组件卸载时需手动清除定时器。

标签: js
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…