当前位置:首页 > JavaScript

js sleep 实现

2026-02-01 15:32:02JavaScript

实现 JavaScript 中的 sleep 功能

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();

使用 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 也能实现类似效果:

js sleep 实现

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实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现列表

js实现列表

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

js实现vr

js实现vr

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

js画图实现

js画图实现

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

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…