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

相关文章

js实现

js实现

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

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js jquery

js jquery

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

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…