当前位置:首页 > JavaScript

js实现睡眠后执行js

2026-03-01 12:30:10JavaScript

使用 setTimeout 实现延迟执行

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

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

结合 Promiseasync/await 实现睡眠

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

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)。

js实现睡眠后执行js

// 仅在支持 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实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…

js实现表单验证提交表单提交表单提交

js实现表单验证提交表单提交表单提交

表单验证与提交的实现 在JavaScript中实现表单验证并提交表单,可以通过监听表单的提交事件,进行验证后决定是否提交。以下是实现方法: 基础表单验证 通过监听表单的submit事件,阻止默认提交…