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();
使用 async/await 的循环
如果需要更精确的延迟控制,可以结合循环实现:
async function sleep(ms) {
const start = Date.now();
while (Date.now() - start < ms) {
await new Promise(resolve => setTimeout(resolve, 10));
}
}
// 使用示例
async function demo() {
console.log('开始等待');
await sleep(2000); // 等待 2 秒
console.log('等待结束');
}
demo();
使用 Generator 函数
通过 Generator 函数和 yield 也能实现类似效果:
function* sleep(ms) {
yield new Promise(resolve => setTimeout(resolve, ms));
}
// 使用示例
const gen = sleep(2000);
gen.next().value.then(() => {
console.log('等待结束');
});
注意事项
- 这些方法均基于异步实现,不会阻塞主线程。
- 在 Node.js 环境中,可以使用
util.promisify简化setTimeout的封装。 - 避免在循环中频繁调用
sleep,可能影响性能。






