在JavaScript中,是否存在具有一致分辨率的时间源(以毫秒为单位)?

JavaScript中的Date对象以毫秒为单位执行不同的机器到机器和浏览器到浏览器的功能分辨率.我发现大多数机器在IE上的分辨率大约为16毫秒,Chrome或Firefox的分辨率可能高达1毫秒.

是否有一般功能可用于JavaScript或IE专门提供更好的时间分辨率?我试图捕获并记录keyDown和keyUp时间(以毫秒为单位),并且需要在/ – 10 ms范围内或更短时间内.

要查看此图示,请查看本页的“新日期()的决议”部分.有一个带有测试按钮的表,用于评估当前机器/浏览器的JavaScript时间分辨率(以毫秒为单位).有趣的是,Chrome定期获得1毫秒的分辨率.

http://www.merlyn.demon.co.uk/js-dates.htm#OV

我的任务是使用JavaScript日期时间方法,它将在浏览器中提供低于10毫秒的分辨率.要替换或改进Date()的东西.

最佳答案
由于您提到Internet Explorer,我假设您正在使用Windows.您获得的15 ms分辨率可能与Windows系统计时器分辨率有关.

我还注意到通过在Windows上运行Java程序,系统计时器的分辨率大约是16毫秒左右. (使用System.currentTimeMillis()方法.)

我做了一个很好的搜索,看看我是否能在Windows中找到有关系统计时器分辨率的任何信息,并且能够从TechNet找到Inside Windows NT High Resolution Timers链接.它提到了一些关于Windows系统计时器的解决方案:

Windows NT bases all of its timer
support off of one system clock
interrupt,which by default runs at a
10 millisecond granularity. This is
therefore the resolution of standard
Windows timers.

(我假设Windows XP和Vista仍然有相同的计时器,认为它是NT的后代.)

除非Firefox和Chrome有自己的高分辨率计时器,否则我相信你可以从Windows平台上的浏览器获得的最佳分辨率大约是10毫秒.

虽然与这个问题无关,但我也在Windows上找到了一篇关于MSDN高分辨率计时器的文章mplement a Continuously Updating,High-Resolution Time Provider for Windows

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...