当前位置:首页 > JavaScript

js实现sleep暂停

2026-04-07 10:48:27JavaScript

使用 Promise 和 setTimeout 实现 sleep

JavaScript 本身没有内置的 sleep 函数,但可以通过 PromisesetTimeout 模拟实现。

js实现sleep暂停

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

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

使用 Generator 函数实现 sleep

通过 Generator 函数和 yield 也可以实现类似效果。

js实现sleep暂停

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

// 使用示例
async function demo() {
  console.log('开始');
  await sleepGenerator(2000).next().value;
  console.log('结束');
}
demo();

同步阻塞式 sleep(不推荐)

这种方法会阻塞整个线程,不建议在实际项目中使用。

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

// 使用示例
console.log('开始');
sleepSync(2000); // 阻塞2秒
console.log('结束');

使用 Atomics.wait 实现 sleep

现代浏览器中可以使用 Atomics API 实现更精确的等待。

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

// 使用示例
console.log('开始');
sleepAtomics(2000); // 等待2秒
console.log('结束');

注意事项

  • 异步方法不会阻塞事件循环,适合大多数场景
  • 同步方法会完全阻塞 JavaScript 执行线程
  • 在生产环境中推荐使用 Promise 方案
  • Node.js 环境也可以使用上述方法

标签: jssleep
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现换肤

js实现换肤

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

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

vue.js实现异步

vue.js实现异步

Vue.js 实现异步的方法 Vue.js 提供了多种方式来处理异步操作,以下是常见的实现方法: 使用 async/await 语法 在 Vue 组件的方法中,可以使用 async/await 来简…

vue.js实现tab

vue.js实现tab

Vue.js 实现 Tab 切换功能 在 Vue.js 中实现 Tab 切换功能可以通过动态组件或条件渲染实现。以下是两种常见方法: 动态组件实现 通过 <component> 结合 v…