티스토리 뷰
안녕하세요 Hani입니다.
이번에는 asSingle 알아볼 거예요.
API 호출은 Single이나 Completable 등 한 번에 끝나는 경우가 대부분입니다.
하지만 배너 광고처럼 지속적으로 값을 받아와야 할 때는 Observable로 Stream을 살려둡니다.
만약 API 호출 후 Observable로 Stream을 반환하는 메서드만 구성해두었다면
이를 Single로 변환할 필요가 종종 있습니다.
observable.asSingle()
Observable은 error, completed를 방출할 때까지 element를 보낼 수 있고,
Single은 한 번의 Success 혹은 Failure를 보낼 수 있습니다.
AsSingle을 살펴보면
element가 두 번째 방출될 때 RxError.moreThanOneElement 에러를,
element가 아직 방출되지 않았고 completed가 내려왔을 때 RxError.noElements 에러를 냅니다.
즉, observable.asSingle의 의도는
element 방출 후 completed,
또는 error입니다.
따라서 observable이 다수의 element를 방출하는 것을 막아야 합니다.
observable.take(1).asSingle()
take(1)은 좋은 대안이 될 수 있습니다.
take(n)는 element가 내려올 때 n개의 element를 받고나서 completed를 방출합니다.
take(1)은 1개의 element가 내려올 때 completed까지 내려주니 single의 의도와 잘 맞는 operator입니다.
'RxSwift' 카테고리의 다른 글
[RxSwift] Operator, Combining Observables (0) | 2021.07.15 |
---|---|
[RxSwift] Operator, Transforming Observables (0) | 2021.07.15 |
[RxSwift] subscribe, observe / Scheduler 관리 (0) | 2021.07.11 |
[RxSwift] Closure ARC / Memory Leak 실험 (0) | 2021.07.10 |
[RxSwift] Subject (0) | 2021.07.07 |
- Total
- Today
- Yesterday
- rxswift
- 벨만포드 시간복잡도
- 최단경로 문제
- 포드 풀커슨 알고리즘
- 최단경로문제
- State Restoration
- 강한 순환 참조
- CPU와 Memory
- mach-o
- CompositionalLayout
- 코딩대회
- MeTal
- 에드몬드 카프 알고리즘
- Testable
- WWDC16
- observeOn
- 부스트캠프 6기
- 네트워크 유량
- 최단경로 알고리즘
- 최대 매칭
- HIG
- IOS
- test coverage
- 네트워크 플로우
- WWDC21
- 컴퓨터 추상화
- WWDC17
- 벨만포드 알고리즘
- WWDC19
- 다익스트라 시간복잡도
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |