当前位置:首页 > JavaScript

js实现sleep

2026-01-31 19:22:55JavaScript

实现 sleep 函数的几种方法

在 JavaScript 中,由于语言本身没有内置的 sleep 函数,但可以通过多种方式模拟实现类似功能。

使用 setTimeout 和回调

通过 setTimeout 和回调函数实现延迟执行:

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

// 使用示例
console.log('开始');
sleep(2000, () => {
    console.log('2秒后执行');
});

使用 Promise 和 async/await

利用 Promise 和 async/await 语法实现更优雅的 sleep 功能:

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

// 使用示例
async function demo() {
    console.log('开始');
    await sleep(2000);
    console.log('2秒后执行');
}
demo();

使用生成器函数

通过生成器函数和 yield 实现类似协程的效果:

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

// 使用示例
const sleep = sleepGenerator(2000);
sleep.next().value.then(() => {
    console.log('2秒后执行');
});
console.log('开始');

使用 Atomics.wait

在 Node.js 环境中,可以使用 Atomics API 实现真正的阻塞:

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

// 使用示例
console.log('开始');
sleep(2000);
console.log('2秒后执行');

使用 busy-waiting(不推荐)

通过循环检查时间实现的 busy-waiting,会阻塞主线程:

js实现sleep

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

// 使用示例
console.log('开始');
sleep(2000);
console.log('2秒后执行');

注意:最后两种方法会阻塞主线程,通常不建议在前端使用。推荐使用 Promise 和 async/await 的方式,既清晰又不会阻塞 UI 线程。

标签: jssleep
分享给朋友:

相关文章

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…