当前位置:首页 > JavaScript

js sleep 实现

2026-04-06 08:23:06JavaScript

使用 setTimeoutPromise

通过 PromisesetTimeout 结合实现异步延迟,模拟同步的 sleep 效果。代码简洁且符合现代异步编程风格。

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

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

使用 setTimeout 回调(传统方式)

适用于不需要 Promise 的环境,通过回调函数实现延迟执行。

function sleep(ms, callback) {
  setTimeout(callback, ms);
}

// 用法示例
console.log('开始等待');
sleep(2000, () => {
  console.log('等待结束');
});

使用 Atomics.wait(Node.js 环境)

适用于 Node.js 的原子操作 API,但会阻塞主线程,通常不推荐用于生产环境。

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

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

使用 while 循环(不推荐)

通过阻塞主线程实现延迟,但会导致性能问题,仅用于演示目的。

js sleep 实现

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

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

注意事项

  • 优先选择 Promise + setTimeout 方案,兼容性强且不阻塞主线程。
  • while 循环和 Atomics.wait 会阻塞主线程,可能影响页面响应或服务性能。
  • Node.js 中可使用 util.promisify(setTimeout) 简化 Promise 封装。

标签: jssleep
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现vr

js实现vr

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

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…