Web Workers:SetInterval和SetTimeout可靠性

时间:2014-11-27 02:43:27

标签: javascript timeout html5-audio web-worker

在浏览器环境中,setTimeoutsetInterval在准确性方面不可靠 - 时间敏感度是一个问题。

最近,我们获得了requestAnimationFrame,这使我们能够做得更好(就performance.now()及其时间戳而言)。

长话短说 - 我决定用Javascript构建一个节拍器,虽然它有效,但它在某个节奏之上还是相当不准确的。虽然补偿后期帧可以使节奏不随时间变化,但是个别节拍略微偏离,这对节拍器不起作用。 (这对于动画来说不是问题,因为它本质上不需要是离散的。)

现在,我可以选择尝试根据我指定的阈值执行前瞻,尝试在可用帧之间放置点击(在动画循环中使用setTimeout)。但我想,由于事件循环,我会遇到类似问题setTimeout在浏览器中不可靠,除非HTML5 Audio API允许你延迟播放几毫秒。 / p>

我的问题:网络工作者与浏览器环境中的setTimeoutsetInterval是否更加准确可靠?

1 个答案:

答案 0 :(得分:5)

我们可以对你的问题说'是',网络工作者对于settimeout和setinterval函数是可靠的,因为web worker根据ui在后台运行,所以它们为你提供非阻塞的ui事件(它们可能会影响节拍器速度),当你正在处理持续的节拍器时间时。

顺便提一下,在here中有一个关于网络工作者的好文档。