当前位置:首页 > 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。这种方式会阻塞主线程。

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
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现拖拽

js实现拖拽

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

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback)…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…