当前位置:首页 > 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,会阻塞主线程:

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

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

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

js实现sleep

标签: jssleep
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swip…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…