是否有任何技巧可以确保
setTimeout()准确执行(无需借助外部API),或者这是一个失败的原因?
不,不。您不会通过它获得任何接近完美准确的计时器的功能
setTimeout()-尚未为此设置浏览器。 但是
,您也不需要依靠它来计时。多数动画库是在几年前弄清楚的:您使用设置了回调
setTimeout(),但根据
(newDate()).milliseconds(或等效值)的值确定需要执行的操作。这使您可以在较新的浏览器中利用更可靠的计时器支持,同时在较旧的浏览器上仍可正常运行。
它还 可以避免使用太多计时器
!这很重要:每个计时器都是一个回调。每个回调都执行JS代码。在执行JS代码时,浏览器事件(包括其他回调)将被延迟或丢弃。回调完成后,其他回调必须与其他浏览器事件竞争才能执行。因此,一个在该时间间隔内处理所有待处理任务的计时器将比两个时间间隔一致的计时器性能更好,并且(对于短超时)比两个重叠超时的计时器要好!
摘要:停止使用
setTimeout()实现“一个计时器/一个任务”的设计,并使用实时时钟来平滑UI动作。



