当前位置:首页 > JavaScript

js sleep 实现

2026-04-06 08:23:06JavaScript

使用 setTimeoutPromise

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

js 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 的环境,通过回调函数实现延迟执行。

js sleep 实现

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 循环(不推荐)

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

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

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现

js实现

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

js实现分页

js实现分页

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

js实现pdf在线预览

js实现pdf在线预览

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

js 实现链表

js 实现链表

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

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…