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();
使用async/await
在异步函数中,await可以暂停代码执行,直到Promise完成。
(async () => {
console.log('休眠前');
await new Promise(resolve => setTimeout(resolve, 1000));
console.log('休眠后');
})();
使用循环阻塞(不推荐)
虽然可以通过循环阻塞主线程实现休眠,但这种方法会严重影响性能,不建议使用。
function sleep(ms) {
const start = Date.now();
while (Date.now() - start < ms) {}
}
console.log('开始');
sleep(2000); // 阻塞2秒
console.log('结束');
注意事项
- 异步休眠不会阻塞主线程,适合在需要等待但不影响其他操作时使用。
- 循环阻塞会冻结页面,仅适用于极端情况或测试场景。







