Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: optimization

Как избежать слишком частых запросов к серверу при реализации поиска с автокомплитом?

Вопрос проверяет понимание оптимизации запросов при вводе пользователя

Короткий ответ

Используют дебаунсинг (debounce) или троттлинг (throttle). Дебаунс ждет, пока пользователь перестанет печатать (например, 300 мс), и только тогда отправляет запрос.

Длинный ответ

  1. Debounce – отправляет запрос только после паузы в вводе:

    function debounce(func, delay) {
    	let timeout;
    	return function() {
    		clearTimeout(timeout);
    		timeout = setTimeout(() => func.apply(this, arguments), delay);
    	};
    }
    const searchInput = document.getElementById('search');
    searchInput.addEventListener('input', debounce(function() {
    	fetchResults(this.value); // Запрос к серверу
    }, 300));
  2.  Throttle – ограничивает частоту запросов (например, не чаще чем раз в 500 мс):

    function throttle(func, limit) {
    	let inThrottle;
    	return function() {
    		if (!inThrottle) {
    			func.apply(this, arguments);
    			inThrottle = true;
    			setTimeout(() => inThrottle = false, limit);
    		}
    	};
    }

Разница:

  • Debounce – лучше для автокомплита (ждет окончания ввода).

  • Throttle – полезен при скролле или resize (гарантирует периодические вызовы).

Пример с Lodash (библиотека с готовыми функциями):

import { debounce } from 'lodash';
searchInput.addEventListener('input', debounce(fetchResults, 300));

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#optimization

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию