js 实现休眠
在JavaScript中实现休眠(暂停代码执行)可以通过多种方式实现,以下是常见的方法:
使用 setTimeout 和 Promise
通过结合 setTimeout 和 Promise 实现异步休眠,避免阻塞主线程。
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function demo() {
console.log('开始休眠');
await sleep(2000); // 休眠2秒
console.log('休眠结束');
}
demo();
使用 setTimeout 回调
传统的回调方式实现休眠,适用于非异步环境。
function sleep(ms, callback) {
setTimeout(callback, ms);
}
console.log('开始休眠');
sleep(2000, () => {
console.log('休眠结束');
});
使用 Atomics.wait(Node.js 环境)
在Node.js中可以通过 Atomics.wait 实现同步休眠,但会阻塞主线程。
function sleep(ms) {
const sharedBuffer = new SharedArrayBuffer(4);
const sharedArray = new Int32Array(sharedBuffer);
Atomics.wait(sharedArray, 0, 0, ms);
}
console.log('开始休眠');
sleep(2000); // 休眠2秒
console.log('休眠结束');
使用 while 循环(不推荐)
通过循环阻塞主线程实现休眠,但会严重消耗CPU资源。

function sleep(ms) {
const start = Date.now();
while (Date.now() - start < ms) {}
}
console.log('开始休眠');
sleep(2000); // 休眠2秒
console.log('休眠结束');
注意事项
- 推荐使用
Promise和setTimeout组合的方式,避免阻塞主线程。 Atomics.wait仅适用于Node.js环境,且会阻塞主线程。while循环方式会严重降低性能,不建议在生产环境中使用。






