js实现睡眠
实现JavaScript睡眠的几种方法
在JavaScript中实现睡眠(延迟执行)可以通过以下几种方式实现:
setTimeout结合Promise
使用setTimeout和Promise可以创建一个简单的睡眠函数:
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// 使用示例
async function demo() {
console.log('开始');
await sleep(2000);
console.log('2秒后');
}
demo();
使用async/await
结合async/await语法可以使代码更清晰:
const delay = ms => new Promise(res => setTimeout(res, ms));
async function run() {
console.log('等待开始');
await delay(3000);
console.log('等待结束');
}
run();
传统回调方式
如果不使用Promise,可以使用传统的回调方式:
function sleep(callback, ms) {
setTimeout(callback, ms);
}
sleep(() => {
console.log('执行回调');
}, 1000);
使用Generator函数
通过Generator函数也可以实现类似效果:

function* sleepGenerator(time) {
yield new Promise(resolve => setTimeout(resolve, time));
}
const sleep = sleepGenerator(1500).next().value;
sleep.then(() => console.log('完成'));
注意事项
- 在浏览器环境中,长时间睡眠可能会影响页面响应
- Node.js环境下可以使用更精确的timers/promises模块
- 避免在主线程中进行长时间阻塞操作
以上方法都可以实现JavaScript中的睡眠效果,选择哪种方式取决于具体的使用场景和代码风格偏好。






