티스토리 뷰
안녕하세요 Hani입니다.
이번엔 Observable의 item을 변환시켜주는 Operator에 대하여 알아보겠습니다.
🔥🔥
Buffer
Observable의 item을 일정 개수 묶어서 버퍼에 저장한 후, 방출하도록 만드는 Operator인 Buffer입니다.
item이 없는 게 확실해질 때까지 배열에 담기 때문에, 마지막엔 빈 배열을 방출하는 것을 볼 수 있습니다.
range처럼 데이터가 이미 Observable에 있는 경우는 곧바로 출력이 되지만
interval같이 일정 시간 간격으로 들어오는 item은 timeSpan마다 최대 count만큼 배열에 묶여 방출됩니다.
count만큼의 item이 없으면 없는대로 방출합니다.
interval이나 buffer가 시간 보장이 안 되는 것 같습니다. 🥺
왜 세개씩 안 나와!
Map
map을 이용하면 Observable의 item을 다른 item으로 변환할 수 있습니다.
간-단
FlatMap
flatMap은 Observable의 item을 다른 새로운 아이템으로 변환시킬 수 있습니다.
그런데 flatMap은 Observable을 변환하는 과정에서 item들의 순서가 유지되는 것을 보장하지 않습니다.
한 item이 변환되는 중에 다음 item이 변환되려 내려올 수 있기 때문..! 🔥
Scan
scan은 Observable이 가진 item들의 누적된 결과를 중간과정을 포함하여 알 수 있습니다.
Window
window는 하나의 Observable을 나눠서 여러 Observable로 나눕니다.
window의 결과물은 Observable을 item으로 갖고 있는 Observable입니다.
마치 2차원 배열 같은..?
따라서 window가 변환한 Observable의 item은 Observable이기 때문에
이 Observable을 개별적으로 subscribe하면 window에 의해 나눠진 item을 얻을 수 있습니다.
제 생각이지만 Marble이 사선으로 되어있는 건
Marble의 순서가 앞뒤로 섞이지 않아서 기존 Observable이 가지고 있는 item의 순서가 유지된다는 것 같아요. 👍
GroupBy
=_= 사진이 너무 작나?
groupBy는 Observable을 Key값을 통해 분류하여 item을 나눠주는 operator입니다.
groupBy의 리턴 값은GroupedObservable인데
GroupedObservable은 Key와 그 Observable이 갖게 될 item들이 들어있습니다.
References
'RxSwift' 카테고리의 다른 글
[RxSwift/asSingle] Observable의 안전하지 않은 변환 (0) | 2022.12.16 |
---|---|
[RxSwift] Operator, Combining 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
- CPU와 Memory
- 코딩대회
- 벨만포드 시간복잡도
- 강한 순환 참조
- WWDC17
- 최대 매칭
- rxswift
- mach-o
- 최단경로 알고리즘
- WWDC21
- 부스트캠프 6기
- HIG
- observeOn
- 에드몬드 카프 알고리즘
- 최단경로문제
- 다익스트라 시간복잡도
- 벨만포드 알고리즘
- Testable
- IOS
- 포드 풀커슨 알고리즘
- MeTal
- 컴퓨터 추상화
- 최단경로 문제
- WWDC19
- CompositionalLayout
- 네트워크 유량
- test coverage
- State Restoration
- WWDC16
- 네트워크 플로우
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |