💡 CombineLatest
2개 이상의 Observable을 결합하여 하나의 Observable로 만들 때 사용한다.
CombineLatest는 결합하려는 이벤트가 최소 한 번씩은 next이벤트가 emit되어야 구독을 시작하게 된다.
위의 예시는 BehaviorSubject 이벤트를 결합 한 것이다. BehaviorSubject는 초기 값을 설정하게 되어 선언 후 바로 combineLatest를 수행하게 된다.
만약! 초기값이 없는 PublishSubject를 사용한다면?
a와 b 모두 한 번 emit이 되어야 combineLatest를 수행할 수 있다.
a의 이벤트가 먼저 emit이 된 후 b가 emit이 되기 때문에 b가 emit되는 시점에 combineLatest를 수행할 수 있게 된다.
combineLatest를 수행하는 시점의 a 값은 마지막으로 emit 된 5가 전달된다.
b이벤트가 emit되지 않으면 combineLatest는 수행되지 않는다.
💡 Zip
zip은 combineLatest와 비슷하게 2개 이상의 Observable을 결합하여 하나의 Observable을 만든다는 점에서 비슷하다.
zip은 emit 시점보다 몇 번째로 emit되는 것인지가 중요하다.
위와 같은 예시를 사용해보자면
a에서 첫번째로 emit된 2와 b에서 첫번째로 emit이 된 “나”가 짝을 지어 emit된다.
정리
✔️ combineLatest vs zip
2개 이상의 Observable을 결합하여 하나의 Observable을 만든다는 점에서는 비슷하다.
combineLatest
- 결합 하려는 이벤트가 모두 최소 한 번 emit 되어야 subscribe를 시작한다.
- emit되는 대로 조합해서 emit
zip
- emit되는 순서가 같은 observable을 짝 지어서 방출한다.
- emit시점 보다 몇 번째로 emit 된 것인지가 중요함
'iOS > 🔎 swift 정리하기' 카테고리의 다른 글
[Swift] Swift Concurrency async / await (0) | 2024.04.03 |
---|---|
[iOS/Kingfisher] 네트워크 통신으로 이미지 받아오기 (0) | 2023.11.26 |
RxSwift 정리하기 (0) | 2023.11.08 |
[iOS/Swift] MapKit Annotation displayPriority 지정하기 (0) | 2023.10.20 |
MapKit CustomAnnotation (0) | 2023.10.10 |