当前位置:首页 > JavaScript

js 实现计时器

2026-03-01 06:38:00JavaScript

js 实现计时器

使用 setTimeout 实现单次计时器

setTimeout(() => {
  console.log('计时结束');
}, 1000); // 1000毫秒后执行

使用 setInterval 实现重复计时器

let counter = 0;
const intervalId = setInterval(() => {
  console.log(`已过去 ${++counter} 秒`);
  if (counter >= 5) {
    clearInterval(intervalId);
  }
}, 1000);

使用 requestAnimationFrame 实现高精度计时器

let startTime = null;
function animate(timestamp) {
  if (!startTime) startTime = timestamp;
  const elapsed = timestamp - startTime;
  console.log(`已过去 ${elapsed.toFixed(2)} 毫秒`);
  if (elapsed < 5000) {
    requestAnimationFrame(animate);
  }
}
requestAnimationFrame(animate);

使用 Date 对象实现精确计时

const start = new Date();
setInterval(() => {
  const now = new Date();
  const elapsed = now - start;
  console.log(`精确计时: ${elapsed} 毫秒`);
}, 100);

倒计时实现

let timeLeft = 10;
const countdown = setInterval(() => {
  console.log(`剩余: ${timeLeft--} 秒`);
  if (timeLeft < 0) {
    clearInterval(countdown);
    console.log('倒计时结束');
  }
}, 1000);

性能优化的计时器实现

let lastTime = performance.now();
let fps = 0;
function update() {
  const now = performance.now();
  fps = 1000 / (now - lastTime);
  lastTime = now;
  console.log(`当前FPS: ${fps.toFixed(2)}`);
  requestAnimationFrame(update);
}
requestAnimationFrame(update);

暂停和恢复计时器

let timer;
let remaining = 5000;
let start;

function startTimer() {
  start = Date.now();
  timer = setTimeout(() => {
    console.log('计时完成');
  }, remaining);
}

function pauseTimer() {
  clearTimeout(timer);
  remaining -= Date.now() - start;
}

// 调用 startTimer() 开始
// 调用 pauseTimer() 暂停

Web Worker 后台计时器

worker.js:

let startTime = Date.now();
setInterval(() => {
  postMessage(Date.now() - startTime);
}, 1000);

主线程:

const worker = new Worker('worker.js');
worker.onmessage = (e) => {
  console.log(`后台计时: ${e.data} 毫秒`);
};

js 实现计时器

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

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现拷贝

js实现拷贝

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

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <d…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 cons…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…