当前位置:首页 > JavaScript

js 实现sleep

2026-02-01 03:00:59JavaScript

在JavaScript中实现sleep功能可以通过多种方式实现,以下是几种常见的方法:

使用setTimeoutPromise

通过结合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/await语法可以更清晰地处理异步等待:

(async () => {
  console.log('等待开始');
  await new Promise(resolve => setTimeout(resolve, 3000));
  console.log('等待结束');
})();

同步阻塞方式(不推荐)

如果需要同步阻塞(通常不推荐,因为会阻塞主线程),可以使用循环或Atomics.wait(仅限于Node.js或特定环境):

function sleepSync(ms) {
  const start = Date.now();
  while (Date.now() - start < ms) {}
}
console.log('开始阻塞');
sleepSync(3000); // 阻塞3秒
console.log('阻塞结束');

使用setTimeout回调(传统方式)

传统回调方式适用于不支持Promise的环境:

js 实现sleep

function sleepWithCallback(ms, callback) {
  setTimeout(callback, ms);
}

sleepWithCallback(2000, () => {
  console.log('回调执行');
});

注意事项

  • 异步sleep(如Promise)不会阻塞主线程,适合大多数场景。
  • 同步sleep会冻结整个页面,仅用于特殊需求或测试环境。
  • Node.js中可以使用util.promisify结合setTimeout进一步简化代码。

标签: jssleep
分享给朋友:

相关文章

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现vr

js实现vr

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

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…