Или свой написать)
есть отдельный пакет npm debounce
Мне нравится вот такая реализация, чтоб пакет не грузить) function debounce(func, time) { let timeout; function debounced(...args) { clearTimeout(timeout); timeout = setTimeout(() => func.apply(this, args), time); } debounced.clear = () => clearTimeout(timeout); return debounced; }
да, у нас в проекте тоже собственная имплементация
Хороший пример практического применения замыкания в js! А в каких кейсах может понадобиться лямбда, которая хранится в функции debounced в свойстве clear?
Когда вам надо очистить таймаут когда он больше не нужен. Например, при анмаунте компонента)
Обычно просто debounce делают миллисекунд на 300, на инпутах) но в любой случае такой "рычаг" управления состоянием внутри функции делает это решение более универсальным. Спасибо)
Обсуждают сегодня