js实现sleep暂停
使用 Promise 和 setTimeout 实现 sleep
JavaScript 本身没有内置的 sleep 函数,但可以通过 Promise 和 setTimeout 模拟实现。

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// 使用示例
async function demo() {
console.log('开始');
await sleep(2000); // 暂停2秒
console.log('结束');
}
demo();
使用 Generator 函数实现 sleep
通过 Generator 函数和 yield 也可以实现类似效果。

function* sleepGenerator(ms) {
yield new Promise(resolve => setTimeout(resolve, ms));
}
// 使用示例
async function demo() {
console.log('开始');
await sleepGenerator(2000).next().value;
console.log('结束');
}
demo();
同步阻塞式 sleep(不推荐)
这种方法会阻塞整个线程,不建议在实际项目中使用。
function sleepSync(ms) {
const start = Date.now();
while (Date.now() - start < ms) {}
}
// 使用示例
console.log('开始');
sleepSync(2000); // 阻塞2秒
console.log('结束');
使用 Atomics.wait 实现 sleep
现代浏览器中可以使用 Atomics API 实现更精确的等待。
function sleepAtomics(ms) {
const sharedArray = new SharedArrayBuffer(4);
const sharedArrayView = new Int32Array(sharedArray);
Atomics.wait(sharedArrayView, 0, 0, ms);
}
// 使用示例
console.log('开始');
sleepAtomics(2000); // 等待2秒
console.log('结束');
注意事项
- 异步方法不会阻塞事件循环,适合大多数场景
- 同步方法会完全阻塞 JavaScript 执行线程
- 在生产环境中推荐使用 Promise 方案
- Node.js 环境也可以使用上述方法






