当前位置:首页 > JavaScript

js 实现定时

2026-02-02 10:46:22JavaScript

定时器基础实现

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

setTimeout 示例:

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

setInterval 示例:

// 每秒重复执行
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 可以优雅地实现延迟:

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:

js 实现定时

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
分享给朋友:

相关文章

js实现验证码

js实现验证码

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

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…