2025-11-01 15:12
Tags: 웹
쓰로틀링 (Throttling)
- 쓰로틀링은 과도한 요청이 시스템에 부담을 주는 것을 막기 위해 이벤트 발생 횟수를 제한하는 기술이다.
- 주로 무한 스크롤, 자동 완성 검색, API 요청 수 제한 등 성능 최적화가 필요한 곳에 사용된다.
- 핵심 원리는 ‘시간’과 ‘타이머’를 이용한 제어
let throttleTimer;
const throttle = (callback, time) => {
if (throttleTimer) return;
throttleTimer = setTimeout(() => {
callback();
throttleTimer = null;
}, time);
};throttleTimer라는 변수를 사용하여 타이머의 상태를 추적한다.throttle함수가 호출되면, 먼저throttleTimer가 실행 중인지 확인한다.- 만약
throttleTimer가 실행 중이라면(즉, 이전에 호출된 이벤트가 아직 처리 대기 중이라면), 현재의 이벤트 호출은 무시하고 함수를 종료한다. throttleTimer가 실행 중이 아니라면,setTimeout함수를 사용하여 새로운 타이머를 설정한다.- 설정된
time(지연 시간)이 지나면,callback함수(실제로 실행하고자 하는 로직)를 실행하고,throttleTimer를null로 초기화하여 다음 이벤트가 호출될 수 있도록 준비한다.
| 구분 | 쓰로틀링 (Throttling) | 디바운싱 (Debouncing) |
|---|---|---|
| 개념 | 일정 시간 간격으로 최대 한 번만 함수를 실행한다. | 연이어 발생하는 이벤트를 그룹화하여 마지막 이벤트만 한 번 실행한다. |
| 비유 | 놀이기구 안전요원 (일정 시간마다 입장) | 엘리베이터 닫힘 버튼 (마지막 사람이 타고 나서 문이 닫힘) |
| 주요 목적 | 실행 횟수를 줄이는 데 초점 | 불필요한 실행을 막는 데 초점 |
| 사용 사례 | 무한 스크롤, API 요청 수 제한 | 검색어 자동 완성, 버튼 중복 클릭 방지 |