> Как оптимизировать код при отправке запроса на каждый символ ввода (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: IT-One
Стек: JavaScript
> Пример ответа
Для оптимизации запросов при вводе каждого символа применяется техника debounce (устранение дребезга). Она откладывает выполнение запроса до тех пор, пока пользователь не прекратит ввод на заданное время (обычно 300–500 мс). Пример реализации на JavaScript:
JAVASCRIPTfunction debounce(func, delay) {let timeoutId;return function(...args) {clearTimeout(timeoutId);timeoutId = setTimeout(() => func.apply(this, args), delay);};}// Использованиеconst searchInput = document.getElementById('search');const handleSearch = debounce(async (query) => {if (query.length < 3) return; // минимальная длина запросаtry {const response = await fetch(`/api/search?q=${query}`);const data = await response.json();// обработка результатов} catch (error) {console.error('Ошибка запроса:', error);}}, 300);searchInput.addEventListener('input', (e) => handleSearch(e.target.value));
Дополнительные улучшения:
-
Отмена предыдущего запроса при новом вводе через
AbortController. -
Throttle (троттлинг) - если нужно гарантировать выполнение запроса не чаще определённого интервала, даже при быстром вводе.
-
Проверка минимальной длины строки (например, 3 символа) для избежания лишних запросов.
-
Кэширование результатов для одинаковых запросов, чтобы не повторять их.
Выбор между debounce и throttle зависит от сценария: debounce лучше для автодополнения, throttle для отслеживания скролла или изменения размера окна.
> Похожие задачи по frontend
Какой инструмент синтетического сахара используют для работы с асинхронным кодом вместо промисов
Как создать промис, который возвращает результат первого успешно завершившегося промиса в JavaScript
В чем разница между var, const и let в JavaScript
Как работают call stack, callback queue, event loop, микротаски и макротаски в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью