当前位置:首页 > 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
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…