Код Middle Отладка и профилирование обновлено

Throttle для событий прокрутки

Условие

Обработчик прокрутки отправляет аналитику на каждое событие (десятки в секунду). Напишите throttle(fn, ms): первый вызов выполняет fn сразу; последующие вызовы в течение ms не выполняют fn немедленно, но последний из них выполняется в конце окна (trailing) с последними аргументами. Метод cancel() отменяет отложенный вызов.

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

  • первый вызов сразу

  • серия даёт первый и последний

  • одиночный вызов без trailing

  • после окна снова сразу

  • cancel отменяет trailing

  • частота ограничена

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

Как подойти

Подсказки: 2
  1. Храните время последнего выполнения и id таймера для trailing-вызова.
  2. Аргументы отложенного вызова перезаписывайте при каждом новом вызове.

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

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