JavaScript中模拟sleep的两种实现方式及局限性

作者:木棉

时间:2026-10-26

浏览:485

本文介绍JavaScript中模拟sleep的两种常见方式:通过死循环消耗CPU时间,以及利用同步XMLHttpRequest请求后台程序。前者会导致浏览器假死和高CPU占用,后者则在高并发下产生巨大的HTTP连接开销。此外,alert和confirm也可中断代码执行。这些方法均非完美解决方案,各有明显缺陷。

文章目录

JavaScript模拟sleep的两种实现方式

目前存在几种实现方式,但均存在不完美之处。


第一种方案的核心逻辑是不断循环,直到达到指定的时间。

具体代码实现如下:

 
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
} 
} 

上述代码实际上并未真正让脚本进入睡眠状态,反而导致CPU迅速进入高负荷运行状态。在多数现代浏览器中,该时间段内页面会处于假死状态。


JavaScript模拟sleep的两种实现方式 
第二种方案

另一种方法是使用xhr同步请求后台程序,例如传入2000毫秒,后台程序sleep 2秒后再返回响应。这种方式也存在缺点:当大量客户端同时请求后台时,保持HTTP连接会产生巨大的开销。



此外,window对象的alert和confirm方法也可以中断后续代码的执行。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章