JavaScript setTimeout如此不准确的原因是什么?
我在这里得到了这个代码:
var date = new Date();setTimeout(function(e) { var currentDate = new Date(); if(currentDate - date >= 1000) { console.log(currentDate, date); console.log(currentDate-date); } else { console.log("It was less than a second!"); console.log(currentDate-date); }}, 1000);
在我的计算机中,它总是正确执行,在控制台输出中为1000。有兴趣在其他计算机,相同的代码,超时回调开始不到一秒钟,差异currentDate - date
在980和998之间。
我知道存在解决这种不准确性的库(例如,Tock)。
基本上,我的问题是:原因setTimeout
是什么,因为在给定的延迟中不会触发?可能是计算机速度太慢而且浏览器会自动尝试适应缓慢并且之前触发事件?
跃然一笑
RISEBY
凤凰求蛊
相关分类