当前位置:首页 > JavaScript

js实现timeout

2026-01-31 23:23:09JavaScript

使用 setTimeout 实现延时执行

setTimeout 是 JavaScript 中用于延时执行代码的核心方法。其基本语法如下:

setTimeout(function, delay, [arg1], [arg2], ...);
  • function:需要延时执行的函数。
  • delay:延时时间(毫秒)。
  • arg1, arg2, ...:可选参数,传递给函数的参数。

示例:延时 2 秒后打印消息

js实现timeout

setTimeout(() => {
  console.log("Delayed message after 2 seconds");
}, 2000);

清除延时任务

使用 clearTimeout 可以取消尚未执行的延时任务。需保存 setTimeout 返回的 ID:

js实现timeout

const timeoutId = setTimeout(() => {
  console.log("This will not run");
}, 1000);

clearTimeout(timeoutId); // 取消任务

结合 Promise 实现异步超时

通过 Promise.race 可以实现超时控制逻辑:

function withTimeout(promise, timeout) {
  return Promise.race([
    promise,
    new Promise((_, reject) => 
      setTimeout(() => reject(new Error("Timeout exceeded")), timeout)
    )
  ]);
}

// 使用示例
withTimeout(fetch('https://api.example.com'), 5000)
  .then(response => console.log(response))
  .catch(error => console.error(error)); // 5秒未响应则报错

递归实现间隔执行(模拟 setInterval)

通过递归调用 setTimeout 可以避免 setInterval 的固定间隔问题:

function repeat(func, interval) {
  function loop() {
    func();
    setTimeout(loop, interval);
  }
  setTimeout(loop, interval);
}

// 使用示例
repeat(() => console.log("Every 1 second"), 1000);

注意事项

  • 浏览器环境的最小延时通常为 4ms(规范要求),但现代浏览器可能不严格遵守。
  • Node.js 中延时精度更高,但实际执行时间受事件循环影响。
  • 避免在循环中创建大量 setTimeout,可能导致内存泄漏。

标签: jstimeout
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

jquery js

jquery js

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

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…