
개요
- The flatMap operator transform the items emitted by an Observable into Observables, then flatten the emissions from those into a single Observable.
- 원본 옵저버블이 방출하는 요소를 각각의 옵저버블로 만들어 (내부적으로) 하나의 옵저버블로 합쳐서 반환한다.
- 클로저가 반환한 복수개의 옵저버블이 하나의 옵저버블로 합쳐지기 때문에, flatten 되었다고 볼 수 있다.
- innerObservable 이 resultObservable 로 이벤트를 방출하면 지연없이 바로 방출한다.
- 따라서 변환된 순서대로 이벤트가 정렬되어 방출되지는 않는다.
- [ ] 구현 코드 확인해보기
입출력
- 클로저 입력 값: 원본 옵저버블이 방출한 요소 하나
- 클로저 반환 값: 방출한 요소를 이용하여 생성한 옵저버블 (물론 이용하지 않아도 된다)
- flatMap 연산자 반환 값: 클로저가 반환하는 복수 개의 옵저버블을 하나로 만든 옵저버블
키워드
- innerObservable
- 원본 옵저버블이 방출한 각각의 요소로 만든 옵저버블
- resultObervable 에 전달한다.
- resultObservable
- 이너 옵저버블의 방출 값을 받아 만드는 단 하나의 옵저버블
- flatMap 연산자의 최종 반환 값이다.
- interleaving
- resultObservable 은 이벤트를 지연없이 전달한다.
- 옵저버블이 변환된 순서대로 옵저버블의 이벤트가 전달되지 않는 것
- concat 연산자는 interleaving 을 허용하지 않는다.\
map 과 flatMap
- 맵은 값을 반환한다
- 플랫맵은 옵저버블 (스트림)을 반환한다.
참고자료
[RxSwift-Operator] Map과 FlatMap
flatMap 의 사용 예제
RXSwift - How to recall an api
tap 이벤트 방출 옵저버블을 API Call 결과 이벤트 방출 옵저버블로 변경해주는 예시