Debounce и throttle сложнее, чем кажется
Обычно debounce и throttle показывают как небольшие функции на несколько строк, но в реальном приложении быстро появляются leading, trailing, cancel(), maxWait и другие нюансы. В статье как раз постепенно разбирают эти кейсы, а также показывают, когда вместо throttle для визуальных обновлений лучше использовать requestAnimationFrame.
Есть и более практичные проблемы: debounce уменьшает количество запросов, но не отменяет уже запущенные, поэтому для поиска может понадобиться ещё и AbortController. Плюс отдельно разобраны React, stale closures и очистка таймеров.
Обычно debounce и throttle показывают как небольшие функции на несколько строк, но в реальном приложении быстро появляются leading, trailing, cancel(), maxWait и другие нюансы. В статье как раз постепенно разбирают эти кейсы, а также показывают, когда вместо throttle для визуальных обновлений лучше использовать requestAnimationFrame.
Есть и более практичные проблемы: debounce уменьшает количество запросов, но не отменяет уже запущенные, поэтому для поиска может понадобиться ещё и AbortController. Плюс отдельно разобраны React, stale closures и очистка таймеров.