Chrome управляет регулированием setInterval в javascript?

Я использую Canvas в html5 с EaselJS, и после некоторой игры с интерфейсом события таймера в Easel начали запускаться очень медленно. Эти события таймера должны были работать на частоте 20 Гц, но вместо этого они работали на частоте 1 Гц. Странным было то, что я закомментировал функцию '_testMouseOver' в мольберте, и время от времени таймер все еще работал медленно.

Все стало страннее, когда я загрузил страницу и настроил консольный журнал в функции _testMouseOver. Иногда он работал на частоте 20 Гц, печатая много операторов, но в других случаях он работал на частоте 1 Гц. Сумасшедшая часть была: когда я прокрутил страницу вниз (не на холсте), таймер вернулся к частоте 20 Гц!

Это поведение сохранялось, когда я комментировал _testMouseOver, так что в основном setInterval(fun, 50) выполнял 'fun' на частоте 1 Гц. Это воспроизводилось примерно в 50% случаев, когда я обновлял страницу. Я также проверил загрузку процессора через Activity Monitor, и Chrome брал только 10%.

Что действительно странно, так это то, что когда я закрывал эту вкладку и открывал новую с той же страницей, поведение исчезало.

Что могло произойти, и какие другие шаги отладки вы могли бы изучить?

Другие детали: Chrome 52.0.2743.116 (64-разрядная версия)
OSX 10.10.5

0 ответов

Другие вопросы по тегам