setInterval замедляется
Такая ситуация. Открываю popup окно в котором должна быть анимация. Вызываю setInterval и все работает поначалу, но когда пытаюсь максимизировать popup окно, все многократно замедляется.
В чем тут проблема? (браузер Edge) Как-то так: http://dkirusfe.bget.ru/interval-test.html |
Когда вы максимизируете окно с движущимся квадратиком, основное окно становится невидимым, следовательно неактивным. Но таймер работает на основной вкладке. Для неактивных (минимизированных, неактивных вкладок) окон таймер автоматически замедляется до 1 сек.
https://usefulangle.com/post/280/set...n-inactive-tab А в некоторых случаях даже до минуты https://usefulangle.com/web-updates/...imers-1-minute |
Ни и на будущее(текущей проблемы это не решит, см. причину выше) - для анимации следует использовать requestAnimationFrame чтобы работать напрямую с отрисовкой браузера, а не абстрактным таймером который ничего не гарантирует по определению.
|
Aetae, requestAnimationFrame вроде тоже не будет срабатывать на неактивной вкладке
|
voraa, дык я уточнил в скобочках.)
|
voraa,
Спасибо. Aetae, Спасибо за информацию, почитал, попробовал, могу немножко поспорить. setInterval ничего не гарантирует, но на практике в моем случае при интервеле 4ms и больше обновляет картинку примерно с заданной частотой, что меня устраивает c большим запасом. С другой стороны, requestAnimationFrame не позволяет задавать интервал (т.е. частоту), какая получится, такая и будет. В моем случае получается что-то примерно 16ms requestAnimationFrame может быть полезна, напр, если надо добиться "плавности" движения, тогда, зная время, которое прошло с прошлого вызова, можно расчитать смещение. Но у меня задача другая, и в моем конкретном случае setInterval идеально подходит |
Форум не дает нажать плюсик, говорит "У Вас нет прав для выполнения этого действия. Пожалуйста, обновите страницу и войдите снова, прежде чем попробовать повторить действие."
|
Цитата:
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 23:05. |