当前位置:首页 > JavaScript

js 实现睡眠

2026-04-05 17:51:58JavaScript

在JavaScript中实现睡眠(延迟执行)可以通过多种方式实现。以下是几种常见的方法:

使用setTimeout

通过setTimeout函数可以实现延迟执行代码的效果。setTimeout会在指定的时间后执行回调函数。

js 实现睡眠

console.log('开始');
setTimeout(() => {
    console.log('延迟2秒后执行');
}, 2000);
console.log('继续执行');

使用Promise和async/await

结合Promiseasync/await语法可以更优雅地实现睡眠功能。

js 实现睡眠

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

async function demo() {
    console.log('开始');
    await sleep(2000);
    console.log('延迟2秒后执行');
}
demo();

使用Generator函数

通过Generator函数和yield关键字也可以实现类似的效果。

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

const generator = sleepGenerator(2000);
generator.next().value.then(() => {
    console.log('延迟2秒后执行');
});
console.log('开始');

使用Atomics.wait

在Node.js环境中,可以使用Atomics.wait实现同步睡眠。这种方法会阻塞主线程,不推荐在浏览器中使用。

function sleep(ms) {
    const sharedArrayBuffer = new SharedArrayBuffer(4);
    const view = new Int32Array(sharedArrayBuffer);
    Atomics.wait(view, 0, 0, ms);
}

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

注意事项

  • setTimeoutPromise的方式是非阻塞的,适合大多数场景。
  • Atomics.wait会阻塞主线程,可能导致性能问题。
  • 在浏览器环境中,避免使用阻塞式睡眠,以免影响用户体验。

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

相关文章

js实现vr

js实现vr

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

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…