앱 사용 중에 연속적인 호출을 할 경우 각각의 처리를 모두 해주는 것은 문제가 발생할 수 있다.
*ex)
- 네트워크 지연 문제로 인한 유저의 결제 버튼 연타 ⇒ 💸☠️💸
- 닉네임 입력 텍스트 필드에서 텍스트 입력 시 유효성 검증을 매번 하면 성능 저하가 발생할 수 있음 ⇒ ☠️
- 검색 시 텍스트가 수정되는 모든 순간마다 자동완성된 결과 목록을 불러오기 위해 서버에 요청하는 경우 ⇒ ☠️*
이런 상황을 막기 위해 연속적으로 여러번 호출이 이루어져도 그 요청들을 모두 처리하지 않도록 조절해주는 최적화 기법이 바로
**👉 디바운스(Debounce)**와 쓰로틀링(Throttling)
Debounce (디바운스)
- 지정된 딜레이 시간 동안 여러 번 호출이 발생하는 경우, 마지막 1번의 호출만 실행
- 딜레이 시간이 끝나기 전에 다시 호출이 발생하면 그 시점을 기준으로 타이머가 다시 초기화됨
🧐 사용 예시
- 자동완성된 검색 결과 표시
- 텍스트 입력 시 유효성 검증 (닉네임, 이메일 등…)
- 결제·송금 등 버튼 클릭
Throttling (쓰로틀링)