상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - switchMap을 사용하여 시간이 중요한 요청을 다루는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
switchMap 연산자는 RxJS에서 주로 비동기 스트림을 다룰 때 사용되며, 특히 시간이 중요한 요청을 처리할 때 매우 유용합니다. switchMap은 내부적으로 이전에 구독한 내부 옵저버블을 취소(cancel)하고 새로운 옵저버블을 구독하기 때문에, 연속적으로 들어오는 요청 중 가장 최신 요청만 처리 하고 이전 요청은 무시하거나 취소하고 싶을 때 적합합니다. switchMap을 사용하여 시간이 중요한 요청 처리 방법 1. 최신 요청 우선 처리 예를 들어, 사용자 검색 입력창에서 사용자가 타이핑할 때 매 글자마다 서버에 검색 요청을 보내는 상황을 생각해보면, 이전 입력에 대한 서버 응답이 늦게 돌아온다면 불필요하게 오래 걸릴 뿐만 아니라 최신 입력 결과와 다를 수 있습니다. 이때 switchMap을 사용하면, 이전 검색 요청에 대한 응답이 오기 전에 새로운 검색 요청이 들어오면 이전 요청이 취소되고 새로운 요청의 결과만 구독하여 최신 결과만 반영할 수 있습니다. 2. 불필요한 네트워크 비용 절감 switchMap은 내부 스트림이 바뀔 때 이전 스트림을 자동으로 구독 해제해주므로, 서버에 대한 불필요한 요청을 줄이고 네트워크 사용량을 절감할 수 있습니다. 이는 서버 부하와 사용자 경험 향상에 크게 기여합니다. 3. 에러 처리 및 취소 처리 용이 switchMap 내부에서 발생한 에러도 더 쉽게 관리할 수 있고, 취소된 이전 요청의 응답을 받지 않기 때문에 UI에 잘못된 데이터가 표시되는 것을 방지할 수 있습니다. 4. 시간이 오래 걸리는 연산 중복 방지 데이터 베이스 조회나 외부 API 호출 같은 시간이 오래 걸릴 수 있는 작업을 처리할 때, 빠른 연속 요청이 있으면 이전 작업을 취소하고 최신 작업만 수행하게 할 수 있습니다. 사용 예시 (개념적 설명) ```typescript import { fromEvent } from 'rxjs'; import { debounceTime, switchMap, map } from 'rxjs/operators'; import { ajax } from 'rxjs/ajax'; const searchInput = document.getElementById('searchBox'); fromEvent(searchInput, 'input').pipe( map((event: InputEvent) => (event.target as HTMLInputElement).value), debounceTime(300), // 연속된 입력 간 300ms 대기 (입력 완료 후 처리) switchMap(searchTerm => ajax.getJSON(`/api/search?q=${searchTerm}`)) ).subscribe(result => { // 최신 검색 결과를 UI에 반영 console.log(result); }); ``` - 사용자가 입력할 때마다 검색어를 감지한다. - debounceTime으로 빠른 입력은 무시하고 조용한 상태가 300ms 지속되면 다음으로 넘어감. - switchMap으로 서버 요청을 보낸다. 만약 입력이 다시 발생하면 이전 요청은 취소되고 새 요청이 실행된다. - 가장 최신 요청 결과만 구독해서 처리하므로, 이전 요청이 늦게 돌아와도 UI를 덮어쓰지 않는다. 요약 - switchMap 은 내부 옵저버블이 변경될 때 이전 옵저버블 구독을 취소한다. - 시간에 민감하거나 중복되면 안 되는 요청(예: 검색, 자동완성, API 호출 등)에 적합하다. - 최신 요청에 대한 응답만 처리해 사용자 경험이 향상된다. - 불필요한 작업과 네트워크 요청을 줄여 효율적이다. - 에러 관리 및 뒷처리가 간편하다. 따라서 시간이 중요하고 빠르게 변하는 요청 시, switchMap을 활용하여 항상 최신 데이터만 처리하도록 구현하는 것이 가장 올바른 방법이라고 할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기