Вебсправочник
Основы веб-разработки

Debounce для ввода: выполнить действие после паузы

Debounce объединяет частые вызовы в одно действие после паузы. Такой подход подходит для неторопливой обработки поисковой строки, когда запуск на каждом символе создаёт лишнюю работу.

Назначение

Debounce объединяет частые вызовы в одно действие после паузы. Такой подход подходит для неторопливой обработки поисковой строки, когда запуск на каждом символе создаёт лишнюю работу.

Как это работает

В локальном документе создайте input id lesson-query. Каждый input отменяет предыдущий таймер и запоминает текущее строковое значение. Пример только выводит строку в консоль и не делает сетевых запросов.

Пример

const input = document.querySelector("#lesson-query");
let timer;
input.addEventListener("input", () => {
  clearTimeout(timer);
  const value = input.value;
  timer = setTimeout(() => console.log("Строка после паузы:", value), 300);
});

Что должно получиться

При быстром наборе сообщение появляется после паузы примерно в 300 миллисекунд. Если пользователь продолжает ввод раньше, прежняя отложенная обработка заменяется новой.

Граница применения и частая ошибка

Таймер не гарантирует точное время выполнения: занятая вкладка может задержать callback. Непрерывный ввод способен откладывать действие неограниченно. Если добавите запросы, отдельно обрабатывайте устаревшие ответы; debounce сам по себе их не отменяет.

Самостоятельная проверка

Наберите слово быстро, затем по одному символу с длинной паузой и сравните число сообщений. При удалении компонента очищайте таймер. Для ввода через редакторы сложных символов отдельно продумайте события композиции.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.