当前位置:首页 > JavaScript

js实现睡眠后执行js

2026-03-01 12:30:10JavaScript

使用 setTimeout 实现延迟执行

通过 setTimeout 可以指定函数在延迟一定时间后执行。延迟时间以毫秒为单位。

js实现睡眠后执行js

setTimeout(() => {
  console.log("延迟执行的操作");
}, 1000); // 延迟1秒后执行

结合 Promiseasync/await 实现睡眠

通过 Promise 封装 setTimeout,结合 async/await 语法实现更清晰的异步睡眠逻辑。

js实现睡眠后执行js

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

async function delayedAction() {
  console.log("开始等待");
  await sleep(2000); // 睡眠2秒
  console.log("等待结束,执行后续操作");
}
delayedAction();

使用 requestAnimationFrame 实现帧级延迟

适用于需要与浏览器渲染帧同步的场景,例如动画处理。

function sleepByFrame(callback, frames = 1) {
  let count = 0;
  function checkFrame() {
    if (count >= frames) {
      callback();
    } else {
      count++;
      requestAnimationFrame(checkFrame);
    }
  }
  requestAnimationFrame(checkFrame);
}

sleepByFrame(() => {
  console.log("延迟1帧后执行");
}, 1);

使用 Atomics.wait 实现阻塞睡眠(谨慎使用)

Atomics.wait 会阻塞主线程,仅适用于特定场景(如 Web Worker)。

// 仅在支持 SharedArrayBuffer 的环境中使用
const sharedBuffer = new SharedArrayBuffer(4);
const sharedArray = new Int32Array(sharedBuffer);

function blockingSleep(ms) {
  Atomics.wait(sharedArray, 0, 0, ms);
}

console.log("开始阻塞睡眠");
blockingSleep(3000); // 阻塞3秒
console.log("睡眠结束");

注意事项

  • 避免在主线程中使用阻塞方法(如 Atomics.wait),否则会导致页面无响应。
  • setTimeout 的延迟时间不精确,可能受事件循环影响。
  • async/await 是推荐方式,代码可读性更高。

标签: 睡眠js
分享给朋友:

相关文章

js实现轮播

js实现轮播

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

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现百叶窗

js实现百叶窗

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

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const rando…