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

如何在JavaScript中测量交互和mousedown事件之间的延迟?,javascript,timing,latency,onmousedown,Javascript,Timing,Latency,Onmousedown,是否有方法测量按下鼠标按钮时与启动定义的onmousedown函数时之间的延迟 或者,是否有关于此延迟的最新统计数据 我假设这两个事件不是同时发生的,并且会因浏览器而异 到目前为止,我唯一的方法是创建多个onmousedown事件,并使用Date测量它们之间的时间差。我发现它们之间相差6毫秒 我正在开发对时间敏感(毫秒)的音频应用程序 任何帮助都很好,谢谢 您可能正在查找与当前时间戳之间的差异。它们都以毫秒为单位返回自历元以来经过的时间: JavaScript document.getEleme

是否有方法测量按下鼠标按钮时与启动定义的onmousedown函数时之间的延迟

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

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

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

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


任何帮助都很好,谢谢

您可能正在查找与当前时间戳之间的差异。它们都以毫秒为单位返回自历元以来经过的时间:

JavaScript

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

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

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


关于连环小提琴,我的时差大部分时间都在1毫秒以下;我偶尔会通过无情的点击按钮和重新加载页面来获得10毫秒以上的值,但这并不常见。当然,如果您在事件处理程序中执行更多计算密集型任务,那么差异很容易扩大,在这种情况下,延迟补偿很快就会成为一个重要部分。

我对桌面浏览器特别感兴趣;我知道移动事件的延迟为300毫秒,但这并不是我想要测量的。使用JavaScript实现对时间敏感的函数可能不是最好的选择。我建议为此类应用程序探索其他具有更好定义规范的工具。“将JavaScript用于时间敏感函数可能不是您的最佳选择。”-还要记住,JavaScript是单线程的。谢谢,是的,我知道JS通常不是时间敏感应用程序的好选择。但是,在使用Web Audio API时,尽可能准确地计时(考虑到具体情况)是很重要的。@JánosWeisz:单线程不应该对延迟有太大影响。你仍然可以通过某些优化来保持应用程序的反应性(例如,在webworkers中做非常繁重的事情)