当前位置:首页 > 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实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…