当前位置:首页 > JavaScript

js 实现定时

2026-02-02 10:46:22JavaScript

定时器基础实现

在JavaScript中,定时功能主要通过 setTimeoutsetInterval 两个内置函数实现。前者用于延迟执行一次代码,后者用于周期性重复执行代码。

setTimeout 示例:

// 延迟1秒后执行
setTimeout(() => {
  console.log('Delayed message');
}, 1000);

setInterval 示例:

js 实现定时

// 每秒重复执行
const intervalId = setInterval(() => {
  console.log('Repeating message');
}, 1000);

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

精确时间控制方案

对于需要更高精度的时间控制,可以使用 performance.now() 配合递归的 setTimeout

function preciseTimer(callback, interval) {
  let expected = performance.now() + interval;
  const timeout = () => {
    const drift = performance.now() - expected;
    callback();
    expected += interval;
    setTimeout(timeout, Math.max(0, interval - drift));
  };
  setTimeout(timeout, interval);
}

preciseTimer(() => console.log('Precise tick'), 1000);

异步等待实现

ES6引入的 Promiseasync/await 可以优雅地实现延迟:

js 实现定时

function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function timedAction() {
  console.log('Start');
  await delay(2000);
  console.log('After 2 seconds');
}

动画帧定时

对于需要与屏幕刷新率同步的动画场景,使用 requestAnimationFramesetInterval 更合适:

function animate() {
  // 动画逻辑
  console.log('Animating...');
  requestAnimationFrame(animate);
}
requestAnimationFrame(animate);

定时器管理

对于需要管理多个定时器的场景,建议使用对象存储定时器ID:

const timers = {
  main: null,
  secondary: null
};

function startTimers() {
  timers.main = setInterval(/*...*/, 1000);
  timers.secondary = setTimeout(/*...*/, 5000);
}

function clearAllTimers() {
  Object.values(timers).forEach(id => {
    if(id) clearInterval(id);
  });
}

标签: js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现图片轮播

js实现图片轮播

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

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…