当前位置:首页 > JavaScript

js sleep 实现

2026-02-01 15:32:02JavaScript

实现 JavaScript 中的 sleep 功能

JavaScript 本身没有内置的 sleep 函数,但可以通过以下几种方式模拟实现延迟执行的效果。

js sleep 实现

使用 Promise 和 setTimeout

通过结合 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();

使用 async/await 的循环

如果需要更精确的延迟控制,可以结合循环实现:

async function sleep(ms) {
  const start = Date.now();
  while (Date.now() - start < ms) {
    await new Promise(resolve => setTimeout(resolve, 10));
  }
}

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

demo();

使用 Generator 函数

通过 Generator 函数和 yield 也能实现类似效果:

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

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

注意事项

  • 这些方法均基于异步实现,不会阻塞主线程。
  • 在 Node.js 环境中,可以使用 util.promisify 简化 setTimeout 的封装。
  • 避免在循环中频繁调用 sleep,可能影响性能。

标签: jssleep
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现列表

js实现列表

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

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js jquery

js jquery

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

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…