Код Middle Отладка и профилирование обновлено
Throttle для событий прокрутки
Условие
Обработчик прокрутки отправляет аналитику на каждое событие (десятки в секунду). Напишите throttle(fn, ms): первый вызов выполняет fn сразу; последующие вызовы в течение ms не выполняют fn немедленно, но последний из них выполняется в конце окна (trailing) с последними аргументами. Метод cancel() отменяет отложенный вызов.
Что проверяют тесты
первый вызов сразу
серия даёт первый и последний
одиночный вызов без trailing
после окна снова сразу
cancel отменяет trailing
частота ограничена
аргументы последнего вызова
Как подойти
Подсказки: 2
- Храните время последнего выполнения и id таймера для trailing-вызова.
- Аргументы отложенного вызова перезаписывайте при каждом новом вызове.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.