当前位置:首页 > JavaScript

js 实现计时器

2026-01-30 15:34:18JavaScript

使用 setInterval 实现计时器

通过 setInterval 可以创建一个重复执行的计时器,适合需要持续更新的场景(如倒计时、秒表)。

let seconds = 0;
const timer = setInterval(() => {
  seconds++;
  console.log(`已运行: ${seconds}秒`);
}, 1000);

// 停止计时器(例如10秒后停止)
setTimeout(() => {
  clearInterval(timer);
  console.log("计时器停止");
}, 10000);

使用 setTimeout 实现单次延迟

setTimeout 适用于单次延迟执行任务,可通过递归调用实现循环计时。

let count = 0;
function runTimer() {
  count++;
  console.log(`第 ${count} 次触发`);
  if (count < 5) {
    setTimeout(runTimer, 1000);
  }
}
runTimer();

高性能计时器(requestAnimationFrame

适合动画或需要与屏幕刷新率同步的场景,精度更高。

let startTime = performance.now();
function updateTimer(currentTime) {
  const elapsed = (currentTime - startTime) / 1000;
  console.log(`运行时间: ${elapsed.toFixed(2)}秒`);
  requestAnimationFrame(updateTimer);
}
requestAnimationFrame(updateTimer);

倒计时实现

结合 Date 对象计算剩余时间,适用于精确倒计时场景。

js 实现计时器

const endTime = new Date().getTime() + 10000; // 10秒后结束
function countdown() {
  const now = new Date().getTime();
  const remaining = Math.max(0, endTime - now);
  console.log(`剩余: ${(remaining / 1000).toFixed(1)}秒`);
  if (remaining > 0) {
    setTimeout(countdown, 100);
  }
}
countdown();

注意事项

  • 清除计时器:务必在不需要时调用 clearIntervalclearTimeout,避免内存泄漏。
  • 误差修正setInterval 可能因事件循环产生延迟,可通过动态调整下次执行时间补偿。
  • 页面隐藏时暂停:使用 visibilitychange 事件优化后台运行的计时器。
document.addEventListener('visibilitychange', () => {
  if (document.hidden) {
    clearInterval(timer);
  } else {
    timer = setInterval(updateFunc, 1000);
  }
});

标签: 计时器js
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…