当前位置:首页 > JavaScript

js 实现睡眠

2026-03-13 23:40:51JavaScript

使用 Promise 和 setTimeout 实现睡眠

在 JavaScript 中实现睡眠功能可以通过 PromisesetTimeout 结合实现。这种方法不会阻塞主线程,适合在异步环境中使用。

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 实现同步睡眠

如果需要实现同步睡眠(会阻塞主线程),可以使用 Atomics.wait。这种方法适用于 Worker 线程环境,不推荐在主线程使用。

js 实现睡眠

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

// 使用示例
console.log('开始同步睡眠');
syncSleep(2000); // 同步睡眠2秒
console.log('同步睡眠结束');

使用 async/await 简化异步流程

对于需要连续睡眠的场景,async/await 语法可以让代码更清晰:

async function delayedLog() {
  console.log('第一次日志');
  await sleep(1000);
  console.log('1秒后的日志');
  await sleep(1500);
  console.log('再1.5秒后的日志');
}
delayedLog();

使用 Date 对象实现忙等待(不推荐)

虽然技术上可行,但忙等待会完全阻塞线程,严重影响性能:

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

// 使用示例(会冻结页面)
console.log('开始忙等待');
busyWait(2000);
console.log('忙等待结束');

标签: 睡眠js
分享给朋友:

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…