JavaScript中模拟sleep的两种实现方式及局限性
作者:木棉时间:2026-10-26 23:52:42浏览:486
本文介绍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迅速进入高负荷运行状态。在多数现代浏览器中,该时间段内页面会处于假死状态。
第二种方案
另一种方法是使用xhr同步请求后台程序,例如传入2000毫秒,后台程序sleep 2秒后再返回响应。这种方式也存在缺点:当大量客户端同时请求后台时,保持HTTP连接会产生巨大的开销。
此外,window对象的alert和confirm方法也可以中断后续代码的执行。
作者最新文章
JavaScript怎么准确判断数据类型:typeof、instanceof与Object.prototype.toString
2026-11-05 17:09:21
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
D3.js 与 ECharts 选型对比:灵活性 vs 开发效率
2026-11-05 09:45:01
