当前位置:首页 > JavaScript

js 实现计时器

2026-03-01 06:38:00JavaScript

使用 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);

主线程:

js 实现计时器

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

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

相关文章

js 实现vue

js 实现vue

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

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…