在浏览器环境中,setTimeout
和setInterval
在准确性方面不可靠 - 时间敏感度是一个问题。
最近,我们获得了requestAnimationFrame
,这使我们能够做得更好(就performance.now()
及其时间戳而言)。
长话短说 - 我决定用Javascript构建一个节拍器,虽然它有效,但它在某个节奏之上还是相当不准确的。虽然补偿后期帧可以使节奏不随时间变化,但是个别节拍略微偏离,这对节拍器不起作用。 (这对于动画来说不是问题,因为它本质上不需要是离散的。)
现在,我可以选择尝试根据我指定的阈值执行前瞻,尝试在可用帧之间放置点击(在动画循环中使用setTimeout
)。但我想,由于事件循环,我会遇到类似问题setTimeout
在浏览器中不可靠,除非HTML5 Audio API允许你延迟播放几毫秒。 / p>
我的问题:网络工作者与浏览器环境中的setTimeout
和setInterval
是否更加准确可靠?
答案 0 :(得分:5)
我们可以对你的问题说'是',网络工作者对于settimeout和setinterval函数是可靠的,因为web worker根据ui在后台运行,所以它们为你提供非阻塞的ui事件(它们可能会影响节拍器速度),当你正在处理持续的节拍器时间时。
顺便提一下,在here中有一个关于网络工作者的好文档。