js sleep实现


实现 JavaScript 中的 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();
使用 async/await 的循环
async function delayedLoop() {
for (let i = 0; i < 5; i++) {
console.log(i);
await new Promise(res => setTimeout(res, 1000));
}
}
delayedLoop();
传统回调方式
function sleepCallback(ms, callback) {
setTimeout(callback, ms);
}
// 用法
console.log('开始');
sleepCallback(2000, () => {
console.log('结束');
});
同步阻塞方式(不推荐)
function sleepSync(ms) {
const start = Date.now();
while (Date.now() - start < ms) {}
}
// 用法
console.log('开始');
sleepSync(2000); // 会阻塞整个线程
console.log('结束');
注意事项
- 同步阻塞方式会冻结整个页面,只适合在 Node.js 命令行工具中使用
- 大多数情况下推荐使用 Promise + async/await 方式
- 浏览器环境中最小延迟通常为 4ms,即使设置更小值也无效






