当前位置:首页 > JavaScript

js实现睡眠后执行js

2026-01-30 21:24:31JavaScript

使用setTimeout实现延迟执行

在JavaScript中,可以通过setTimeout函数实现延迟执行代码的效果。setTimeout接受两个参数:要执行的函数和延迟的毫秒数。

setTimeout(() => {
  console.log('这段代码将在1秒后执行');
}, 1000);

使用Promise和async/await实现睡眠

ES6引入了Promise和async/await语法,可以更优雅地实现睡眠功能。

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

async function delayedExecution() {
  console.log('开始');
  await sleep(2000); // 等待2秒
  console.log('2秒后执行');
}

使用requestAnimationFrame实现精确延迟

对于需要与浏览器渲染同步的延迟执行,可以使用requestAnimationFrame

function delayedAnimation(callback, delay) {
  const start = performance.now();

  function frame(time) {
    if (time - start >= delay) {
      callback();
    } else {
      requestAnimationFrame(frame);
    }
  }

  requestAnimationFrame(frame);
}

delayedAnimation(() => {
  console.log('在精确时间后执行');
}, 1000);

使用Generator函数实现可中断延迟

Generator函数可以创建可暂停和恢复的执行流程。

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

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

使用Web Worker实现后台延迟

对于需要在不阻塞主线程的情况下实现延迟,可以使用Web Worker。

// worker.js
self.onmessage = function(e) {
  setTimeout(() => {
    postMessage('延迟完成');
  }, e.data);
};

// 主线程
const worker = new Worker('worker.js');
worker.onmessage = function(e) {
  console.log(e.data);
};
worker.postMessage(1000);

使用Atomics.wait实现同步睡眠

在SharedArrayBuffer环境中,可以使用Atomics API实现同步睡眠。

js实现睡眠后执行js

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

console.log('开始');
syncSleep(2000); // 同步等待2秒
console.log('2秒后执行');

每种方法适用于不同的场景,setTimeout和Promise适用于大多数异步延迟需求,requestAnimationFrame适合动画相关延迟,Web Worker适合后台任务,而Atomics.wait则适用于特殊的同步等待场景。

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

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js分组实现

js分组实现

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

js实现vr

js实现vr

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

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…