setTimeOut выдает 233 кадра в секунду, а requestAnimationFrame выдает 61 - PullRequest
6 голосов
/ 21 декабря 2011

Я провел несколько тестов на Chrome и requestAnimationFrame дал 61 кадр / с, а setTimeOut( callback, 0 ) - 233 кадр.не лучше ли сделать визуализацию с помощью setTimeOut и просто использовать requestAnimationFrame, чтобы определить, когда окно потеряло фокус, а затем остановить таймауты, пока фокус не вернется?

И дополнительный вопрос: есть ли другой способ определить, когда окно теряет фокус, кроме requestAnimationFrame, не вызывающего обратный вызов?

1 Ответ

12 голосов
/ 21 декабря 2011

Запрос кадра анимации синхронизирован с частотой обновления ваших мониторов (бесполезно анимировать больше кадров, чем вы фактически показываете на экране)

Вот ссылка из документации Mozilla: https://developer.mozilla.org/en/DOM/Animations_using_MozBeforePaint

Управление частотой кадров

MozBeforePaint не будет срабатывать более фиксированного числа раз в секунду, например, 50 или 60. Это сделано намеренно, потому что современные операционные системы и оборудование не будутв любом случае, пусть браузер отображает больше кадровОграничение частоты кадров позволяет избежать бесполезной работы, тем самым экономя использование процессора и мощности и улучшая общую производительность системы.

...