Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про React: debounce, throttle, optimization

Объясните концепцию дебаунсинга и троттлинга в контексте React.

Этот вопрос проверяет понимание методов дебаунсинга и троттлинга, которые используются для управления частотой вызовов функций.

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

Дебаунсинг и троттлинг — это техники, которые ограничивают количество вызовов функции, чтобы улучшить производительность приложений. Дебаунсинг задерживает выполнение функции до тех пор, пока не прекратится серия вызовов, тогда как троттлинг позволяет выполнять функцию с фиксированной частотой. Оба метода полезны в ситуациях, таких как обработка ввода пользователя или события прокрутки.

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

Дебаунсинг и троттлинг — это две техники, используемые для управления частотой вызовов функций в JavaScript и React. Они особенно полезны для обработки событий, которые могут вызывать множество вызовов функции за короткий промежуток времени, таких как ввод текста в поле или прокрутка страницы.

Дебаунсинг

Эта техника отменяет вызов функции, если в течение заданного времени происходит новое событие. Это означает, что функция будет вызвана только после завершения серии вызовов. Это полезно, например, при поиске в реальном времени, когда вы хотите отправить запрос на сервер только после того, как пользователь закончит ввод.

Пример реализации дебаунсинга с использованием хуков:

import React, { useState, useEffect } from 'react'; 

function DebounceExample() {
  	const [searchTerm, setSearchTerm] = useState('');  
  	const [debouncedTerm, setDebouncedTerm] = useState(searchTerm);  
  
  	useEffect(() => {
      		const handler = setTimeout(() => {  
          		setDebouncedTerm(searchTerm);    
      		}, 300);    
      
      		return () => {   
         		clearTimeout(handler);    
      		};  
  	}, [searchTerm]);  
  
  	return (
      		<div>   
         		<input     
           			 type="text"        
            			 value={searchTerm}        
           			 onChange={(e) => setSearchTerm(e.target.value)}      
        		 />      
         		<p>Дебаунсированный термин: {debouncedTerm}</p>    
      		</div>  
  	); 
}

Троттлинг

Эта техника ограничивает вызов функции до одного раза за определенный промежуток времени. Это означает, что функция будет вызываться на регулярной основе, независимо от того, как часто происходит событие.

Пример реализации троттлинга с использованием хуков:

import React, { useState, useEffect } from 'react'; 

function ThrottleExample() {
  	const [count, setCount] = useState(0);  
  
  	useEffect(() => {
      		const handleScroll = () => {
           		setCount(prevCount => prevCount + 1);    
      		};    
      
      		const throttledHandleScroll = throttle(handleScroll, 1000);    
      
      		window.addEventListener('scroll', throttledHandleScroll);    
      		return () => {   
         		window.removeEventListener('scroll', throttledHandleScroll);    
      		};  
   	}, []);  
   
   	return <p>Количество прокруток: {count}</p>; 
} 

function throttle(func, limit) {
  	let lastFunc;  
  	let lastRan;  
  
  	return function() {
      		const context = this;    
      		const args = arguments;    
      		if (!lastRan) {    
        		func.apply(context, args);      
        		lastRan = Date.now();    
     		 } else {   
         		clearTimeout(lastFunc);      
         		lastFunc = setTimeout(() => {    
             			if (Date.now() - lastRan >= limit) {     
                  			func.apply(context, args);          
                  			lastRan = Date.now();        
             			}      
         		}, limit - (Date.now() - lastRan));    
      		}  
  	}; 
}

Обе техники помогают улучшить производительность, управляя частотой вызовов функций и избегая избыточной нагрузки на приложение.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • React

    React

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

#debounce

#throttle

#optimization

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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