DOM и React Senior DOM на практике обновлено

throttle на кадрах

Условие

rafThrottle(fn, raf): не чаще одного вызова за кадр, с последними аргументами. Функция запроса кадра приходит вторым аргументом. Верни обёртку с методом cancel().

Что проверяют тесты

  • один вызов на кадр с последними аргументами

  • следующий кадр снова планируется

  • cancel отменяет запланированный вызов

Как подойти

Для обработчиков scroll, mousemove и resize это правильнее обычного throttle по времени: браузер сам задаёт темп, и вызов приходится ровно перед отрисовкой, а не посреди неё. Последние аргументы обязательны - иначе позиция курсора окажется устаревшей на кадр.

Подсказки: 2
  1. Флаг «кадр уже запрошен» плюс хранение последних аргументов.
  2. Внутри колбэка кадра флаг надо сбросить до вызова функции.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.