Observable이 프로퍼티로 Observable을 갖는 경우, flatMap을 통해 이를 다루는 방법을 소개합니다.
Swift Standard Library의 flatMap과 유사합니다. 배열의 배열을 flatMap하면 단일 배열을 리턴하는 것과 마찬가지로 Observable을 방출하는 Observable을 flatMap하면 inner Element를 방출하는 Observable을 리턴합니다.
아직 다뤄지진 않았지만 map과 switchLatest을 결합한 것입니다. Observable을 방출하는 Observable을 flatMapLatest하면 가장 마지막에 방출된 Observable의 inner Element를 방출하는 Observable을 리턴합니다.
Observable을 이벤트의 Observable로 변환해야할 경우가 있습니다. 이렇게 되면 .error나 .completed 이벤트도 .next(.error), .next(.completed)로 감싸져서 전달되며, Observable을 방출하는 Observable을 flatMap했을 때 inner Observable의 종료에 의해 subscription이 종료되는 상황을 피할 수 있습니다. materialize()는 wrapping을 dematerialize()는 unwrapping을 수행합니다.
RxSwift. Ch 8. Transforming Operators in Practice (0) | 2020.05.01 |
---|---|
RxSwift. Ch 6. Filtering Operators in Practice. (0) | 2020.04.25 |
RxSwift. Ch 5. Filtering Operators (0) | 2020.04.20 |
RxSwift. Ch 4. Observables & Subjects in Practice (0) | 2020.04.19 |
RxSwift. Ch 3. Subjects (0) | 2020.04.18 |
댓글 영역