- Published on
JavaScript 지연 검색(Debounce) 구현 — API 호출 줄이기
- Authors

- Name
- Deokgoo Kim
최근 프로젝트를 보고 느낀 점이, 무의미한 API 호출이 쌓여
재앙으로 닥치는 것을 보아 이러한 작은 성능 개선을 정리하고자 합니다.
검색엔진을 구현할 때 API 호출을 줄이는 방법으로서 지연 호출
하는 방법에 대해 정리해 보겠습니다.
알아야할 것들
- setTimeout
- clearTimeout
setTimeout은 비동기적으로 설정한 delay 이후에 실행할 수 있도록 하는 함수입니다.
clearTimeout은 setTimeout을 취소할 수 있습니다. MDN 참고
(macroTask queue에서 event loop를 통해 call stack으로 넘어갑니다.)
구현
구현 방법은 싱글톤과 유사합니다. setTimeout으로 delay 이후에 API 호출을 하는데, 도중에 입력이 들어오면 기존 setTimeout을 죽이고 새로운 setTimeout을 만드는 것입니다. (클로저를 사용해서 구현합니다.)
const createDelay = (__callback, ms) => {
let instance;
return () => {
clearTimeout(instance);
instance = setTimeout(() => __callback(), ms);
}
}
const fetchData = () => {
...fetchAPI Call
}
const delaySearch = createDelay(fetchData, 250);
개인적으로 delay는 250ms ~ 500ms가 유저 친화적이라고 생각합니다.
관련 글
2021년 9월 12일
fetch vs axios 차이점과 선택 기준 정리
XMLHttpRequest 대신 fetch와 axios를 써야 하는 이유, 두 라이브러리의 차이점(JSON 자동 변환, 에러 처리, 쿠키 전송)과 선택 기준을 정리했습니다.
2026년 3월 1일
블로그 프로젝트를 갈아엎은 이야기 — Next.js 12에서 16으로, 파일 기반에서 클라우드 CMS로
3년 운영한 Next.js 12 파일 기반 블로그를 Next.js 16 App Router + Firestore로 전면 재구축했습니다. 배포 없이 글을 쓸 수 있게 된 과정과 ISR 캐싱 전략까지 정리했습니다.
2026년 1월 1일
2025년, 개발자로 성장한 한 해를 되돌아보며
2025년 한 해 동안 개발자로서 경험한 기술적 성장, 주요 프로젝트, 그리고 개인적 깨달음들을 솔직하게 돌아보는 회고록입니다.
댓글
새 글 알림 받기
실무에서 바로 써먹을 수 있는 개발 팁과 경험담을 받아보세요
개인정보는 뉴스레터 발송 목적으로만 사용되며, 언제든 구독을 해지할 수 있습니다.