js 实现睡眠
在JavaScript中实现睡眠(延迟执行)可以通过多种方式实现。以下是几种常见的方法:
使用setTimeout
通过setTimeout函数可以实现延迟执行代码的效果。setTimeout会在指定的时间后执行回调函数。

console.log('开始');
setTimeout(() => {
console.log('延迟2秒后执行');
}, 2000);
console.log('继续执行');
使用Promise和async/await
结合Promise和async/await语法可以更优雅地实现睡眠功能。

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秒后执行');
注意事项
setTimeout和Promise的方式是非阻塞的,适合大多数场景。Atomics.wait会阻塞主线程,可能导致性能问题。- 在浏览器环境中,避免使用阻塞式睡眠,以免影响用户体验。






