Debounce против throttle
Вопрос
Чем debounce отличается от throttle и где что применять?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
debounce откладывает вызов до паузы в событиях
throttle пропускает не чаще раза в интервал
debounce - поиск по вводу, автосохранение, валидация
throttle - скролл, resize, mousemove, отправка аналитики
у debounce нужен способ отменить отложенный вызов при размонтировании
leading и trailing определяют, вызывать в начале или в конце окна
Что могут спросить следом
- Напиши debounce с методом cancel
- Что такое leading edge и когда он нужен
- Почему debounce нельзя создавать прямо в теле компонента
Разбор
debounce откладывает вызов, пока события не прекратятся на заданное время: срабатывает
один раз после паузы. throttle пропускает вызовы не чаще чем раз в интервал - срабатывает
регулярно во время потока событий.
Поиск по мере ввода, автосохранение, валидация - debounce: промежуточные состояния
не нужны. Скролл, resize, mousemove, отправка метрик - throttle: нужна регулярность,
но не каждый кадр.
Оба нужно уметь отменять: отложенный вызов после размонтирования компонента - типичный источник ошибки «обновление состояния размонтированного».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Каррирование и частичное применение
Следующий вопрос
reduce без начального значения и тип аккумулятора