js实现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
在ES2017中,async/await语法可以更简洁地实现sleep:
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
(async () => {
console.log('开始等待');
await sleep(2000);
console.log('等待结束');
})();
注意事项
- JavaScript是单线程语言,
sleep函数不会阻塞整个线程,而是通过异步回调实现延迟。 - 避免在同步代码中使用
setTimeout实现阻塞,这会导致性能问题。 - 现代浏览器和Node.js环境均支持上述方法。






