当前位置:首页 > JavaScript

js实现sleep暂停

2026-03-15 17:24:10JavaScript

实现 sleep 暂停的方法

在 JavaScript 中,没有内置的 sleep 函数,但可以通过以下几种方式实现类似功能。

使用 setTimeout 和回调

通过 setTimeout 结合回调函数实现延迟执行。

js实现sleep暂停

function sleep(callback, delay) {
  setTimeout(callback, delay);
}

sleep(() => {
  console.log('执行延迟操作');
}, 1000);

使用 Promise 和 async/await

通过 Promiseasync/await 实现更简洁的异步延迟。

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

async function run() {
  console.log('开始');
  await sleep(1000);
  console.log('延迟 1 秒后执行');
}

run();

使用生成器函数

通过生成器函数和 yield 实现延迟控制。

js实现sleep暂停

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

const gen = sleepGenerator(1000);
gen.next().value.then(() => {
  console.log('延迟 1 秒后执行');
});

使用 Atomics.wait

通过 Atomics.wait 实现同步阻塞(仅适用于 Node.js 环境)。

function sleep(delay) {
  const sharedArray = new SharedArrayBuffer(4);
  const sharedView = new Int32Array(sharedArray);
  Atomics.wait(sharedView, 0, 0, delay);
}

console.log('开始');
sleep(1000);
console.log('延迟 1 秒后执行');

使用 busy-waiting(不推荐)

通过循环占用 CPU 实现阻塞,但会严重影响性能。

function sleep(delay) {
  const start = Date.now();
  while (Date.now() - start < delay) {}
}

console.log('开始');
sleep(1000);
console.log('延迟 1 秒后执行');

注意事项

  • 在浏览器环境中,推荐使用 Promiseasync/await,避免阻塞主线程。
  • 在 Node.js 中,可以使用 Atomics.waitsetTimeout
  • 避免使用 busy-waiting,因为它会严重降低性能。

标签: jssleep
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…