브라우저 환경에서 setTimeout
및 setInterval
은 시간에 대한 민감도가 중요한 정확성에 대해 신뢰할 수 없습니다.웹 작업자 : SetInterval 및 SetTimeout 안정성
최근에 requestAnimationFrame
이 주어 졌으므로 조금 더 개선 할 수 있습니다 (performance.now()
및 타임 스탬프).
긴 이야기 짧게 - 나는 자바 스크립트로 메트로놈을 만들기로 결정했다. 그리고 그것이 작동하는 동안 그것은 특정 템포 위에 상당히 부정확하다. 늦은 프레임을 보정하면 템포가 시간이 지남에 따라 비 동기화되지 않게되지만, 개별 비트는 약간 떨어져 메트로놈에서는 작동하지 않습니다. (본질적으로 이산 적이 지 않아도되는 애니메이션의 경우에는 문제가되지 않습니다.)
지금 당장은 내가 지정한 임계 값에 따라 미리보기를 수행하려고 시도 할 수있는 옵션이 있습니다. 사용 가능한 프레임 사이에 클릭을 놓으십시오 (애니메이션 루프에서 setTimeout
사용). 하지만 HTML5 Audio API가 밀리 초 단위로 재생을 지연시키지 않는 한 setTimeout
은 이벤트 루프로 인해 브라우저에서 신뢰할 수없는 유사한 문제가 발생할 것이라고 생각합니다.
내 질문 : 웹 작업자와 브라우저 환경에서 setTimeout
및 setInterval
이보다 정확하고 신뢰할 수 있습니까?
완벽한 타이밍을 얻는 유일한 방법은 오디오 API를 사용하는 것입니다. [시간 다루기 : 리듬을 사용하여 사운드 재생] 아래의 [이 기사] (http://www.html5rocks.com/en/tutorials/webaudio/intro/)에서 타이밍에 관한 섹션이 있습니다. – spender
@spender 이봐, 그냥 말하고 싶었어. WebAudio는 실제로 매력처럼 작동했습니다 (무한 메트로놈 루프를 위해 일부 곡을 뛰어 넘은 후). 좋은 전화, 팁 주셔서 감사! –