Задать вопрос
@codeZlo

Задержка Render VUE.JS. Как избежать?

Здравствуйте!

Суть такова. На Vue.js есть render, который рисует график на canvas каждые 100 миллисекунд. Когда вкладка активна, то всё ок. Когда же вкладка не активна какое-то время (всегда по-разному), то при переключении на эту вкладку render начинает выполняться не каждые 100 миллисекунд, а каждые рандомное количество миллисекунд. Складывается ощущение, что всё виснет. Приходится либо ждать какое-то продолжительное время, либо просто обновлять страницу. Отмечу, что ещё на сайте есть сокеты, но с ними вроде всё ок в это время.

Известен такой факт:
Большинство браузеров (десктопных в первую очередь) продолжают выполнять setTimeout/setInterval, даже если вкладка неактивна.

При этом ряд из них (Chrome, FF, IE10) снижают минимальную частоту таймера, до 1 раза в секунду. Получается, что в «фоновой» вкладке будет срабатывать таймер, но редко.

При работе от батареи, в ноутбуке – браузеры тоже могут снижать частоту, чтобы реже выполнять код и экономить заряд батареи. Особенно этим известен IE. Снижение может достигать нескольких раз, в зависимости от настроек.


Так вот, возможно ли как-то изменить этот момент, чтобы даже в фоном режиме работало четко и сокеты и render?

Буду признателен за ваш ответ.
  • Вопрос задан
  • 436 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
А вот если бы вместо этого рисовали бы svg как обычный vue компонент с реактивностью, то никаких проблем бы не было. Вообще использовать set timeout вместо request animation frame странно в 2k18.
Ответ написан
@ar5
если внутри библиотека реализована через rAf, то скорее всего никак, потому что он работает только на активной вкладке, можно обойти через обычное прослушивание событий сокетов и изменение данных вашего графика
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы