当前位置:首页 > JavaScript

js 实现休眠

2026-04-05 16:31:25JavaScript

使用 Promise 和 setTimeout 实现休眠

在 JavaScript 中,可以使用 PromisesetTimeout 组合实现休眠功能。这种方法不会阻塞主线程,适合在异步环境中使用。

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

// 使用示例
async function demo() {
  console.log('开始休眠');
  await sleep(2000);
  console.log('休眠结束');
}

使用 Atomics.wait 实现同步休眠

对于需要真正阻塞线程的场景(如 Worker 线程),可以使用 Atomics.wait。这种方法会真正阻塞当前线程,但只能在 Web Worker 中使用。

function syncSleep(ms) {
  const buffer = new SharedArrayBuffer(4);
  const view = new Int32Array(buffer);
  Atomics.wait(view, 0, 0, ms);
}

// 使用示例(必须在 Worker 线程中)
console.log('开始同步休眠');
syncSleep(2000);
console.log('同步休眠结束');

使用循环阻塞实现(不推荐)

虽然不推荐在生产环境使用,但通过循环检查时间戳可以实现简单的阻塞式休眠。这种方法会完全阻塞主线程,导致页面无响应。

js 实现休眠

function busySleep(ms) {
  const start = Date.now();
  while (Date.now() - start < ms) {}
}

// 使用示例
console.log('开始忙等待');
busySleep(2000);
console.log('忙等待结束');

注意事项

  • 前端开发中推荐使用 Promise 方案,避免阻塞 UI 线程
  • Node.js 环境可以使用 util.promisify(setTimeout)timers/promises 模块
  • 同步休眠方案仅适用于特定场景,大部分情况下应使用异步方案

标签: js
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js实现滑动

js实现滑动

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