Необходимо выполнять определенный код 30-40 раз в секунду. Возможные задержки реализаци
надо учитывать, как и вариант, что код будет слишком тяжелым, чтобы исполнить за указанный участок времени.
Для отрисовки ввели window.requestAnimationFrame, а что ввели для вычислений?
Пользоваться setTimeout с Date.getNow() для определения времени, затраченного н
выполнение кода - идея не очень. Раньше задержка setTimeout была 3-4мс, сейчас уменьшили до 0-2. Но все-равно, все задается в миллисекундах и погрешность довольно высока.
Ввели Promises - для другого, но я видел где-то безумную реализацию таймера на них.
Ввели Web Workers - по идее, то что надо - вычисления в отдельном потоке, без замедлени
основной страницы. У них там, вроде-бы, сложности с взаимодействием со страницей, но, по сути, это не особо то и нужно в большинстве случаев.
Добавили window.performance.now(), да и вообще время с микросекундами, что прекрасно, но реализацию высокоточного таймера на микросекундах я так и не увидел.
В общем, что использовать, для, грубо говоря, игры?
Ответы
Ответ 1
Вам могут помочь underscore функции
Throttle и
Debounce
Я пользуюсь ими в проектах с requestAnimationFrame для снижения нагрузок при частом вычислении значений, которые обновляются реже, чем смена кадров.
Реализация функций прекрасно описана и прокомментирована в исходниках undersocre
Комментариев нет:
Отправить комментарий