js实现休眠
在JavaScript中实现休眠(即暂停代码执行一段时间)可以通过以下几种方法实现:
使用setTimeout与Promise结合
通过setTimeout和Promise结合实现异步休眠,适用于现代JavaScript(ES6+):
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// 使用示例
async function demo() {
console.log('开始休眠');
await sleep(2000); // 休眠2秒
console.log('休眠结束');
}
demo();
使用setTimeout回调
传统方法通过setTimeout的回调函数实现休眠效果,但需注意这会异步执行后续代码:
console.log('开始休眠');
setTimeout(function() {
console.log('休眠结束');
}, 2000); // 2秒后执行
同步阻塞方案(不推荐)
通过循环阻塞主线程实现同步休眠,但会严重损耗性能,仅适用于特殊场景:

function sleepSync(ms) {
const start = Date.now();
while (Date.now() - start < ms) {}
}
console.log('开始同步休眠');
sleepSync(2000); // 阻塞2秒
console.log('同步休眠结束');
注意事项
- 异步方案(Promise/setTimeout)不会阻塞主线程,适合大多数场景。
- 同步方案会冻结页面交互,仅在Web Worker等非UI线程中可考虑使用。
- 浏览器环境推荐优先使用
requestAnimationFrame实现动画延迟而非休眠。






