当前位置:首页 > JavaScript

js实现休眠

2026-03-13 16:27:04JavaScript

使用 setTimeoutPromise 实现休眠

在 JavaScript 中,原生没有直接提供类似 sleep() 的休眠函数,但可以通过 setTimeout 结合 Promise 实现类似功能。这种方法不会阻塞主线程,适合异步场景。

js实现休眠

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

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

使用 Atomics.wait 实现同步休眠(仅限 Node.js)

在 Node.js 环境中,可以通过 Atomics.wait 实现真正的同步休眠,但这种方式会阻塞主线程,通常不建议在前端使用。

js实现休眠

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

// 使用示例
console.log('开始同步休眠');
syncSleep(3000); // 同步休眠3秒
console.log('同步休眠结束');

使用 while 循环模拟休眠(不推荐)

通过空循环消耗时间可以实现休眠效果,但会严重阻塞主线程,导致页面无响应,仅适用于极端测试场景。

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

// 使用示例
console.log('开始忙等待');
busyWait(1000); // 阻塞1秒
console.log('忙等待结束');

注意事项

  • 前端开发推荐使用 Promise + setTimeout 方案,兼容性好且不阻塞 UI
  • Atomics.wait 需要 Node.js 环境且对 SharedArrayBuffer 有安全限制
  • 避免使用忙等待方案,会导致性能问题
  • 现代浏览器支持 setTimeout 的嵌套超时最小延迟(通常 >=4ms)

标签: js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js怎么实现异步

js怎么实现异步

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