当前位置:首页 > JavaScript

js实现定时

2026-01-31 18:00:50JavaScript

定时器基础实现

JavaScript 提供了两种主要的定时器方法:setTimeoutsetIntervalsetTimeout 用于在指定的时间后执行一次代码,而 setInterval 用于每隔指定的时间重复执行代码。

// setTimeout 示例:延迟 2 秒后执行
setTimeout(() => {
  console.log('延时 2 秒执行');
}, 2000);

// setInterval 示例:每隔 1 秒执行一次
const intervalId = setInterval(() => {
  console.log('每隔 1 秒执行');
}, 1000);

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

定时器的清除

为了避免内存泄漏或意外的重复执行,定时器需要被正确清除。setTimeout 返回一个定时器 ID,可以通过 clearTimeout 取消;setInterval 返回的 ID 则通过 clearInterval 取消。

js实现定时

const timeoutId = setTimeout(() => {
  console.log('这段代码不会执行');
}, 2000);

clearTimeout(timeoutId);

高级定时控制

使用递归的 setTimeout 可以替代 setInterval,实现更精确的定时控制。这种方式可以确保前一次执行完成后再开始下一次定时。

function repeatTask() {
  console.log('递归定时任务');
  setTimeout(repeatTask, 1000);
}

repeatTask();

定时器与异步结合

定时器常用于异步任务调度,例如延迟加载数据或实现轮询机制。以下是一个轮询 API 的示例:

js实现定时

function pollAPI() {
  fetch('https://api.example.com/data')
    .then(response => response.json())
    .then(data => {
      console.log(data);
      setTimeout(pollAPI, 5000); // 5 秒后再次轮询
    })
    .catch(error => {
      console.error('轮询失败:', error);
      setTimeout(pollAPI, 10000); // 失败后 10 秒重试
    });
}

pollAPI();

性能优化注意事项

避免在短时间内创建大量定时器,可能导致性能问题。可以使用防抖(debounce)或节流(throttle)技术优化高频触发的定时任务。

function debounce(func, delay) {
  let timeoutId;
  return function() {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => func.apply(this, arguments), delay);
  };
}

const debouncedLog = debounce(() => console.log('防抖后的输出'), 300);
window.addEventListener('resize', debouncedLog);

定时器的替代方案

现代浏览器提供了 requestAnimationFrame,适合动画等需要与屏幕刷新率同步的场景。其执行频率通常为 60 FPS(约 16.7ms/帧)。

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

animate();

标签: js
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url,…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML…