могат ли уебработниците да се използват за по-точно измерване на времето

Ако искате да анимирате, това обикновено включва извикване на settimeout или setinterval. След това събитието се присъединява към другите събития в системата за опашка за събития и събитието може да се забави от времето, зададено, когато сте извикали settimeout поради GUI на приложението, обработващ други събития, като движения на мишката върху платно. Но какво ще стане, ако настроите анимационния цикъл в webworker? които няма да бъдат повлияни от GUI събития и могат точно да извикат функцията за анимация в главната нишка (използвайки postmessage) в точния интервал от време, зададен в извикването на функцията. Поне на теория изглежда добре, но дали наистина ще работи?


person ejectamenta    schedule 30.05.2015    source източник
comment
това е интересен подход sitepoint.com/creating-accurate-timers-in- javascript въпреки че все още ще имате индивидуалното неправилно време, следващите събития се настройват, за да задействат повече за по-малко време с интервала   -  person ejectamenta    schedule 31.05.2015


Отговори (1)


Но какво ще стане, ако настроите анимационния цикъл в webworker?

Същият проблем: Събитието, идващо от уеб работника, което ви казва, че е време да направите нещо, се присъединява към същата опашка със задачи, към която се присъединяват задачите на setTimeout или setInterval.

Може да получите по-добри резултати от requestAnimationFrame вместо от setTimeout/ setInterval, тъй като неговата изрична цел е да увеличи синхронизирането на вашия код с цикъла на опресняване на дисплея на браузъра.

person T.J. Crowder    schedule 30.05.2015
comment
Аз съм по-загрижен за точни аудио звуци, да речем, ако искате да възпроизведете звук точно за 5 секунди. Webaudio има свой собствен часовник за звукови събития, който работи доста добре и изглежда независим от основната опашка за събития, но искам да използвам по-опростен звуков API, който ще превежда на други платформи (phonegap или libGDX звуков API) и те изглежда предлагат само играйте сега функционалност - person ejectamenta; 31.05.2015
comment
Всъщност може би отговорът за правилното време се крие във функцията webaudio NoteOn. Как е възможно тази функция да планира звуково събитие, което да се възпроизвежда точно толкова милисекунди в бъдеще? Ако тази функционалност може да бъде извлечена от API, тогава ще бъде възможно да се създаде наистина точна функция setInterval за анимация или други цели. Изглежда има само системния часовник, с който да работи. Може би прави някакъв вид прогнозиране въз основа на вземане на проби от системния часовник, но за да гарантира точност?. - person ejectamenta; 31.05.2015
comment
Ако правите аудио, тази публикация в блог показва, че уебработниците могат да се използват за подобряване на времето. - person ggorlen; 05.07.2021