当前位置:首页 > 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实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…