当前位置:首页 > JavaScript

js实现定时

2026-03-13 15:53:45JavaScript

使用 setTimeout 实现单次定时

setTimeout 用于在指定延迟后执行一次函数。基本语法如下:

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

可通过 clearTimeout 取消未执行的定时任务:

const timer = setTimeout(() => {}, 1000);
clearTimeout(timer);

使用 setInterval 实现循环定时

setInterval 会按照固定时间间隔重复执行函数:

const interval = setInterval(() => {
  console.log('每秒执行');
}, 1000);

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

注意:需手动清除以避免内存泄漏,尤其在组件卸载时(如React的 useEffect 返回清理函数)。

使用 requestAnimationFrame 实现动画定时

适合高频动画场景,与屏幕刷新率同步(通常60fps):

function animate() {
  console.log('动画帧');
  requestAnimationFrame(animate);
}
animate();

可通过 cancelAnimationFrame 停止:

let animationId;
function start() {
  animationId = requestAnimationFrame(animate);
}
function stop() {
  cancelAnimationFrame(animationId);
}

使用 Promise 实现异步延迟

结合 setTimeout 封装延迟函数:

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

async function demo() {
  await delay(2000);
  console.log('2秒后执行');
}
demo();

Web Worker 实现后台定时

避免主线程阻塞的长时间定时任务:

js实现定时

// worker.js
let interval;
self.onmessage = (e) => {
  if (e.data === 'start') {
    interval = setInterval(() => postMessage('tick'), 1000);
  } else if (e.data === 'stop') {
    clearInterval(interval);
  }
};

// 主线程
const worker = new Worker('worker.js');
worker.onmessage = (e) => console.log(e.data);
worker.postMessage('start');

注意事项

  1. 浏览器环境下定时器的最小延迟通常为4ms(嵌套定时器超过5层时)
  2. Node.js 中可用 setImmediate 实现类似 setTimeout(fn, 0)
  3. 长时间运行的定时任务可能导致页面性能下降,建议使用 Web Worker 或分片处理

标签: js
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js 实现vue

js 实现vue

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

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js树实现

js树实现

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

js 实现滚动

js 实现滚动

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

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…