当前位置:首页 > JavaScript

js实现定时

2026-03-13 15:53:45JavaScript

使用 setTimeout 实现单次定时

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

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

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

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

使用 setInterval 实现循环定时

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

js实现定时

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

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

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

使用 requestAnimationFrame 实现动画定时

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

js实现定时

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 实现后台定时

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

// 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实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…

js实现滚动

js实现滚动

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