当前位置:首页 > JavaScript

js实现睡眠后执行js

2026-03-01 12:30:10JavaScript

使用 setTimeout 实现延迟执行

通过 setTimeout 可以指定函数在延迟一定时间后执行。延迟时间以毫秒为单位。

setTimeout(() => {
  console.log("延迟执行的操作");
}, 1000); // 延迟1秒后执行

结合 Promiseasync/await 实现睡眠

通过 Promise 封装 setTimeout,结合 async/await 语法实现更清晰的异步睡眠逻辑。

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

async function delayedAction() {
  console.log("开始等待");
  await sleep(2000); // 睡眠2秒
  console.log("等待结束,执行后续操作");
}
delayedAction();

使用 requestAnimationFrame 实现帧级延迟

适用于需要与浏览器渲染帧同步的场景,例如动画处理。

function sleepByFrame(callback, frames = 1) {
  let count = 0;
  function checkFrame() {
    if (count >= frames) {
      callback();
    } else {
      count++;
      requestAnimationFrame(checkFrame);
    }
  }
  requestAnimationFrame(checkFrame);
}

sleepByFrame(() => {
  console.log("延迟1帧后执行");
}, 1);

使用 Atomics.wait 实现阻塞睡眠(谨慎使用)

Atomics.wait 会阻塞主线程,仅适用于特定场景(如 Web Worker)。

js实现睡眠后执行js

// 仅在支持 SharedArrayBuffer 的环境中使用
const sharedBuffer = new SharedArrayBuffer(4);
const sharedArray = new Int32Array(sharedBuffer);

function blockingSleep(ms) {
  Atomics.wait(sharedArray, 0, 0, ms);
}

console.log("开始阻塞睡眠");
blockingSleep(3000); // 阻塞3秒
console.log("睡眠结束");

注意事项

  • 避免在主线程中使用阻塞方法(如 Atomics.wait),否则会导致页面无响应。
  • setTimeout 的延迟时间不精确,可能受事件循环影响。
  • async/await 是推荐方式,代码可读性更高。

标签: 睡眠js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…