Ответ 1
Это происходит, когда Blink (механизм рендеринга Chrome) решает отложить выполнение таймера (например, функцию, переданную в requestAnimationFrame
, setTimeout
или setInterval
), поскольку эти функции обычно принимают > 50 мс для выполнения и есть пользовательский сенсорный ввод. Это делается для приоритезации обработки ввода пользователем (например, прокрутки и метчики) над тем, что делает сайт.
Если вы столкнулись с этим сообщением, то, скорее всего, ваши пользователи получат подобное поведение. Здесь как воспроизвести этот сценарий:
- У вас есть длительный javascript, который запускается через таймеры.
- Быть на мобильном устройстве (или эмулировать его с помощью режима устройства DevTools).
- Имейте сенсорный ввод, прокрутка пальцем вниз по экрану является самой надежной. Нажатие или отбрасывание страницы может также вызвать ее, но ее реже и труднее воспроизвести.
- Экспериментальное дросселирование процессора devtools заставит JS занять больше времени и даст вам больше шансов увидеть его.
Метод как решить это непосредственно из проблемы с ссылкой в сообщении консоли вниз в комментарии 40:
- Запишите временную шкалу на странице, которая запускает консольное сообщение об отсрочке.
- Выберите всю временную шкалу и откройте панель "Журнал событий" в нижней части окна.
- Введите "Таймер уволен" в текстовое поле фильтра. (См. Снимок внизу).
- Ищите таймеры в списке, чье "Общее время" превышает 50 миллисекунд. Это проблематичные. (Обратите внимание, что таймеры, которые превышают 10 миллисекунд, также могут запускать это сообщение в некоторых случаях, когда браузер обрабатывает жест пользователя.)
Вы хотите, чтобы эти функции выполнялись быстрее или реже.