js 实现sleep
在JavaScript中实现类似其他语言中的sleep功能,可以通过以下几种方式模拟延迟执行。JavaScript本身没有内置的sleep函数,但可以通过异步编程实现类似效果。
使用Promise和setTimeout
通过结合Promise和setTimeout,可以创建一个异步的sleep函数:
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// 使用示例
async function demo() {
console.log('开始等待');
await sleep(2000); // 等待2秒
console.log('等待结束');
}
demo();
使用Generator函数
通过Generator函数和yield关键字,可以实现类似的效果:
function* sleepGenerator(ms) {
yield new Promise(resolve => setTimeout(resolve, ms));
}
// 使用示例
const generator = sleepGenerator(2000);
generator.next().value.then(() => {
console.log('等待完成');
});
使用async/await简化
async/await语法糖可以进一步简化代码的可读性:

const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
(async () => {
console.log('开始');
await sleep(3000);
console.log('结束');
})();
注意事项
- 以上方法均基于异步实现,需确保在
async函数内使用await。 - 直接阻塞主线程(如循环空转)会严重影响性能,不推荐使用。
- 适用于需要延迟执行异步操作的场景(如动画、定时任务等)。






