为什么setTimeout的启动时间早于它应该启动的时间
Why is setTimeout firing earlier than it should?
我有一些node.js代码如下:
var start = Date.now();
setTimeout(function() {
console.log(Date.now() - start);
for (var i = 0; i < 100000; i++) {
}
}, 1000);
setTimeout(function() {
console.log(Date.now() - start);
}, 2000);
当我在机器上运行它时,会发生一些奇怪的事情。我得到的时间在970到980之间,在1970到1980之间。为什么我得到的时间早于超时时间?
我相信您遇到这些问题是因为日期精度。它可能因平台和浏览器而异。
以下是关于Date准确性的更详细的解读。
一些平台上有更多的高精度计时器,但您通常必须进行一些混合和匹配(检测可用的计时器并相应地进行回归)。
来自node.js setTimeOut
文档:
需要注意的是,您的回调可能不会被调用在精确的延迟毫秒内-Node.js不能保证回调将触发的确切时间,以及排序的确切时间事情会突然发生。回调会被调用得尽可能接近到指定的时间。
然而,有一个纳米计时器可以玩:
https://www.npmjs.org/package/nanotimer
一些相关问题:
- node.js setTimeout分辨率非常低且不稳定
- 为什么node.js处理setTimeout(func,1.0)不正确
然而,我确实认为提前+/-30ms有点多(与我玩过的大多数浏览器相比,它们通常不会超过10ms晚(只要cpu没有耗尽))。
相关文章:
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 从启动日期时间选择器中排除时间段
- 将事件附加到启动日期时间选取器
- 启动时间圈子插件在引导模式
- 时间选取器不启动
- 从固定的服务器时间启动图像交换JavaScript
- 在网站上等待特定时间以启动流程
- 一段时间后启动功能
- D3.js :仅当指针在同一位置停留最短时间时,才启动鼠标悬停事件
- Node.js以及如何在应用程序中获得正常运行时间/启动时间
- HTML5视频时间更新事件未启动
- 启动日期时间选择器minDate和maxDate无法在单击事件时更新
- 从javascript启动本地时间输入
- 编写一个时间函数,在游戏中清除倒计时并重新启动
- 启动日期时间选择器初始值
- 如何使这个javascript在某个时间启动
- jQuery slideUp()和slideDown()函数在奇数时间启动
- 加载和播放播放列表.m3u8在iPad上的特定时间启动
- 如何根据AM和PM使用java脚本或jquery在特定时间启动和停止发光每个按钮
- Javascript 如何在确切的时间启动脚本