当前位置:首页 > JavaScript

js实现休眠

2026-01-31 18:32:37JavaScript

使用 setTimeoutPromise 实现休眠

在 JavaScript 中可以通过 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 或 Web Worker 中),可以使用 Atomics.wait API。这种方式会阻塞主线程。

js实现休眠

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

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

使用 Date 对象实现忙等待

虽然不推荐,但在某些特殊情况下可以使用基于 Date 的忙等待实现休眠。这种方式会持续占用 CPU。

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

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

注意事项

  • 在浏览器环境中,主线程的同步休眠会冻结 UI,应优先使用 Promise 方案
  • Atomics.wait 需要运行在支持 SharedArrayBuffer 的环境中
  • 忙等待方案会严重影响性能,仅适用于特殊测试场景
  • Node.js 环境下可以考虑使用 setImmediateprocess.nextTick 进行微调

标签: js
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js jquery

js jquery

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

js实现祖玛

js实现祖玛

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