当前位置:首页 > JavaScript

js 实现sleep

2026-04-05 19:23:29JavaScript

在JavaScript中实现sleep功能可以通过多种方式实现,以下是几种常见的方法:

使用Promise和setTimeout

通过结合PromisesetTimeout,可以实现一个异步的sleep函数:

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

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

使用Generator函数

通过Generator函数和yield关键字,可以实现类似sleep的效果:

function* sleepGenerator(ms) {
  yield new Promise(resolve => setTimeout(resolve, ms));
}

// 使用示例
const sleep = sleepGenerator(2000);
sleep.next().value.then(() => {
  console.log('等待结束');
});

使用同步方式(不推荐)

JavaScript是单线程的,同步阻塞会严重影响性能,但可以通过循环实现:

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

// 使用示例
console.log('开始等待');
sleepSync(2000); // 阻塞2秒
console.log('等待结束');

使用Atomics.wait

适用于Web Worker环境,通过Atomics.wait实现阻塞:

js 实现sleep

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

// 使用示例(需在Worker中运行)
console.log('开始等待');
sleepWorker(2000); // 阻塞2秒
console.log('等待结束');

注意事项

  • 同步方法会阻塞主线程,导致页面无响应,不推荐在浏览器中使用。
  • Promiseasync/await是最常用的异步实现方式。
  • Atomics.wait仅适用于Web Worker环境。

标签: jssleep
分享给朋友:

相关文章

jquery.js

jquery.js

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

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js实现菜单导航

js实现菜单导航

实现基础菜单导航结构 使用HTML和CSS创建菜单的基本结构,再通过JavaScript添加交互功能。HTML部分通常使用<ul>和<li>标签构建层级: <nav i…