포스트

API를 호출할 때의 디바운싱(Debouncing)이란? 쓰로틀링(Throttling)이란?

✅ 디바운싱(Debouncing)이란?

짧은 시간 안에 연속해서 발생하는 이벤트를 제어해서, 마지막 이벤트가 끝난 뒤 일정 시간 이후에 한 번만 실행되도록 하는 기법


  • 사용자가 타이핑할 때마다 API를 호출하면 서버 과부하
  • 스크롤이나 리사이즈 이벤트는 너무 자주 발생
  • 사용자가 입력을 “멈춘 후”에 한 번만 처리하고 싶을 때

  • 사용자가 b, bi, bib, bibl, bible을 순서대로 입력
  • 디바운싱을 적용하면: 마지막 입력(bible) 후 예: 500ms 대기하고 한 번만 API 호출
1
2
3
4
5
6
7
8
9
10
// React 예시
const [query, setQuery] = useState("");
const debouncedQuery = useDebounce(query, 500);

useEffect(() => {
  if (debouncedQuery) {
    fetchSuggestions(debouncedQuery); // 500ms 동안 입력이 멈춘 경우만 실행
  }
}, [debouncedQuery]);

⏱️ 디바운싱 vs 쓰로틀링(throttling)

항목디바운싱 (Debounce)쓰로틀링 (Throttle)
실행 타이밍마지막 이벤트 이후 일정 시간일정 간격으로 무조건 실행
예시자동완성, 검색창스크롤 이벤트, 윈도우 리사이즈
목적최소한으로 호출지속적으로 일정 간격 호출

🔧 구현 방식 (의사 코드)

1
2
3
4
5
6
7
8
function debounce(fn, delay) {
  let timeout;
  return (...args) => {
    clearTimeout(timeout);
    timeout = setTimeout(() => fn(...args), delay);
  };
}

✅ 요약

질문답변
디바운싱이란?연속된 이벤트 중 마지막 이벤트 이후 일정 시간 뒤에 한 번만 실행하는 전략
왜 쓰나?불필요한 호출/연산 줄이기 위해
대표 예시검색창 자동완성, 입력창 검증, 실시간 필터링 등

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.