javascript - 如何测量 JavaScript 中交互和 mousedown 事件之间的延迟?

标签 javascript timing latency onmousedown

有没有办法测量按下鼠标按钮时定义的 onmousedown 函数触发时之间的延迟?

或者,是否有关于此延迟的最新统计数据?

我假设这两个事件不是同时发生的,并且因浏览器而异。

到目前为止,我唯一的方法是创建多个 onmousedown 事件并使用 Date 测量它们之间的时间差。我发现它们之间最多有 6ms 的差异。

我正在开发对时间敏感(毫秒)的音频应用程序。

任何帮助都很棒,谢谢!

最佳答案

您可能正在寻找 Event.timeStamp 之间的区别和当前时间戳 Date.now() 。它们都返回自纪元以来耗时(以毫秒为单位):

JavaScript

document.getElementById("mydiv").addEventListener('click', function (e) {
    // in milliseconds
    var latency = Date.now() - e.timeStamp;
});

Working example on JSFiddle.

通过从后者中减去前者 - 正如您在包含的代码片段中看到的 - 您可以测量延迟。

不幸的是,事件 timeStamp 并不是单击鼠标的实际硬件时刻,而是浏览器从操作系统接收到单击事件的时间。然而,这总是发生在调用事件处理程序之前,并且延迟应该可以忽略不计。

关于链接的 fiddle ,对我来说,大多数时间的时间差异都在 1 毫秒以下;我偶尔会通过无情的按钮粉碎和页面重新加载来达到 10 毫秒以上的值,但这并不常见。当然,如果您在事件处理程序中执行更多计算密集型任务,则差异很容易攀升,在这种情况下,延迟补偿很快就会成为重要组成部分。

关于javascript - 如何测量 JavaScript 中交互和 mousedown 事件之间的延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28680397/

相关文章:

javascript - 避免在嵌套元素中冒泡

javascript - Web Audio API 振荡器节点对象生命周期和 stop() 方法

sockets - "Interrupt coalescing"和 "Nagle algorithm"之间有什么区别?

javascript - 按顺序获取 JSON 键

javascript - 如何在 Istanbul 尔编写 lambda 单元测试?

javascript - 三星智能电视上显示警报

c++ - 在 C++ 中分别测量在每个线程上花费的 CPU 时间

jQuery fadeIn() fadeOut() 计时问题

fork 的 Redis 延迟

synchronization - 好的多人/多人在线客户端<>服务器游戏在移动计算中使用延迟吗?