当前位置:首页 > JavaScript

js 实现延时执行

2026-03-15 22:34:33JavaScript

使用 setTimeout 实现基础延时

setTimeout 是 JavaScript 中最常用的延时执行方法。它接受一个回调函数和延时时间(毫秒),在指定时间后执行回调。

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

结合 Promise 实现异步延时

通过封装 setTimeout 为 Promise 对象,可以更好地配合 async/await 使用:

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

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

使用 async/await 实现串行延时

在需要连续延时执行的场景下,async/await 能保持代码的线性逻辑:

async function sequentialDelays() {
  await delay(1000);
  console.log('第一步完成');

  await delay(1500);
  console.log('第二步完成');
}

通过 clearTimeout 取消延时

保存 setTimeout 返回的 timer ID,可以在需要时取消未执行的延时:

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

clearTimeout(timerId);

递归实现循环延时

替代 setInterval 的方案,通过递归调用实现可控的循环延时:

function repeatWithDelay(fn, delayMs, times) {
  if(times <= 0) return;

  setTimeout(() => {
    fn();
    repeatWithDelay(fn, delayMs, times - 1);
  }, delayMs);
}

浏览器环境下的 requestAnimationFrame

对于需要与屏幕刷新率同步的动画场景,requestAnimationFrame 提供更精确的延时控制:

js 实现延时执行

function delayedAnimation() {
  const start = performance.now();

  function frame(timestamp) {
    const elapsed = timestamp - start;
    if(elapsed < 1000) {
      requestAnimationFrame(frame);
    } else {
      console.log('1秒后执行动画');
    }
  }

  requestAnimationFrame(frame);
}

标签: js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现日历

js实现日历

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

js实现延迟

js实现延迟

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

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…