상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - switchMap을 사용하여 API 호출을 최적화하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
switchMap을 사용하여 API 호출을 최적화하는 방법에 대해 설명드리겠습니다. --- switchMap 개요 RxJS의 `switchMap` 연산자는 소스 Observable에서 새로운 값을 방출할 때마다 내부에서 실행하는 Observable을 교체합니다. 즉, 이전에 실행되던 Observable은 취소되고, 새로운 Observable에서 나온 값만 방출됩니다. 이 특성 덕분에, 여러 API 호출이 연속적으로 발생하는 상황에서 불필요한 이전 요청을 취소하고 최신 요청 결과만 처리할 수 있습니다. --- switchMap을 이용한 API 호출 최적화 방법 1. 과도한 API 호출 문제 해결 예를 들어, 검색창에 사용자가 글자를 입력할 때마다 API 호출이 발생하는 경우, 모든 입력에 대해 요청을 보내면 서버에 부하가 심하고 사용자 경험도 나빠집니다. `switchMap`을 사용하면 사용자가 입력을 바꾸면 이전 입력에 대한 API 요청은 취소되고, 마지막 입력에 대한 요청만 진행됩니다. 이렇게 하면 불필요한 중복 요청이 줄어들어 네트워크 효율이 향상됩니다. 2. 사용자 입력에 대한 debounce 적용 일반적으로 `debounceTime`과 함께 `switchMap`을 사용합니다. `debounceTime`은 사용자가 입력을 멈춘 후 일정 시간이 지나면 Observable이 값을 방출하게 해, 너무 잦은 API 호출을 막아줍니다. 이후 `switchMap`이 해당 값을 받아 API 호출 Observable을 생성합니다. 3. 에러 관리가 용이함 `switchMap`은 내부 Observable이 새로 구독될 때 이전 구독을 완전히 해제해 에러가 새 Observable에 영향을 미치지 않도록 할 수 있어, 호출 실패에 따른 불필요한 상태 변경을 방지합니다. --- 간단한 구현 예시 ```typescript import { fromEvent } from 'rxjs'; import { debounceTime, switchMap, map, distinctUntilChanged } from 'rxjs/operators'; import { ajax } from 'rxjs/ajax'; // 예: 검색 input element const searchInput = document.getElementById('search'); const search$ = fromEvent(searchInput, 'input').pipe( map((event: any) => event.target.value.trim()), debounceTime(300), // 300ms 동안 입력이 멈추길 대기 distinctUntilChanged(), // 같은 값 연속 방출 방지 switchMap(query => { if (!query) { return of([]); // 빈 검색어면 빈 배열 반환 } // 실제 API 호출 return ajax.getJSON(`https://api.example.com/search?q=${query}`); }) ); search$.subscribe(results => { // API 결과 처리 console.log(results); }); ``` --- 핵심 요약 - `switchMap`은 이전 API 호출을 자동으로 취소 하고 마지막 요청만 처리함으로써 불필요한 호출을 방지한다. - `debounceTime`과 같이 사용해 사용자의 입력 활동이 멈출 때만 API 요청이 가도록 한다. - `distinctUntilChanged`를 추가하면, 동일한 검색어에 대해 중복 호출을 방지할 수 있다. - 이를 통해 서버와 클라이언트의 리소스를 최대한 효율적으로 사용하고 사용자 경험을 높일 수 있다. --- 이런 방식으로 `switchMap`을 활용하면 연속적인 이벤트(입력 변화, 클릭 등)에서 API 호출을 효율적으로 제어하여 네트워크 트래픽과 처리 부하를 줄이고, 최신 상태를 빠르게 반영하는 최적화된 API 호출 패턴을 만들 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기