有没有办法覆盖 setTimeout 函数,使其使用微秒而不是毫秒

Is there a way to override setTimeout function so it uses microseconds instead of milliseconds

本文关键字:setTimeout 覆盖 函数 有没有      更新时间:2023-09-26

既然有这个函数window.performance.now()返回自页面开始加载以来的当前时间(以微秒为单位),有没有办法将其准确性实现为更精确的setTimeout函数

简短的回答是否定的,没有。 此外,setTimeout的毫秒粒度具有误导性。 某些浏览器的准确性要低得多,尽管有解决方法。 在任何情况下,setTimeout调用仅在当前调用堆栈完成执行后调用,这可能比您想要的要长得多。 setInterval实际上有一个有趣的行为,如果它们被其他执行代码延迟,它将对多个调用进行排队,这样当它们执行时,它们将一个接一个地执行,中间没有延迟。

简短回答:否。

长答案:Javascript 不保证确切的超时期限,只保证最短超时期限。setTimeout()setInterval() 都会延迟代码并在线程可用时执行它。将其测量为微秒是没有意义的。