1. 생성
나는 새로운 Observable을 생성하고 싶은데 그 Observable이
특정 항목을 생성해야 한다면: Just
구독 시점에 호출된 Action, Callable, Runnable 또는 그와 유사한 함수 등을 통해 생성된 항목을 리턴해야 한다면: From
지정된 시간 이후에 항목을 배출해야 한다면: Timer
특정 Array, Iterable 또는 유사한 형태의 소스로부터 항목들을 배출해야 한다면: From
퓨처에서 연속된 항목을 가져와야 한다면: From
반복적으로 연속된 항목을 배출해야 한다면: Repeat
사용자가 정의한 로직을 통해 생성되어야 한다면: Create
각각의 옵저버가 Observable을 구독한 후에 생성되어야 한다면: Defer
연속된 정수를 배출해야 한다면: Range
특정 시간 간격별로 항목을 배출해야 한다면: Interval
특정 시간 후에 항목을 배출해야 한다면: Timer
항목 배출 없이 실행을 완료해야 한다면: Empty
아무일도 하지 않아야 한다면: Never
2. 결합
다른 Observable을 결합시켜 새로운 Observable을 생성해야 한다
순서와 상관없이 전달된 모든 Observable이 가진 항목 전체를 배출해야 한다면: Merge
전달된 Observable의 순서대로 Observable이 가진 모든 항목들을 배출해야 한다면: Concat
각각의 Observable이 항목을 배출 할 때마다 그 항목들을 결합시켜 배출해야 한다면: Zip
Observable 중 하나라도 항목을 배출할 경우에 마지막으로 배출된 항목들을 결합시켜 배출해야 한다면: CombineLatest
그리고 가장 최근에 항목을 배출한 Observable을 통해서만 항목을 배출해야 한다면: Switch
3. 변환
Observable이 배출한 항목들을 변환한 후에 다시 배출해야 하는데
함수와 함께 항목을 한번에 하나씩 변환 후 배출해야 한다면: Map
해당 Observable이 배출한 모든 항목들을 하나의 Observable이 배출하는 형태로 배출해야 한다면: FlatMap
순서대로 Observable이 배출한 항목들을 연결지어 배출해야 한다면: ConcatMap
앞에서 실행 된 결과를 기반으로 항목을 변환한 후 배출해야 한다면: Scan
항목 배출 전까지 경과한 시간을 가리키는 객체로 변환한 후에 배출해야 한다면: TimeInterval
4. 지연
Observable이 항목을 배출하기 전에 항목의 배출 시간을 지연시켜야 한다면: Delay
5. Wrapping/Unwrapping
Observable이 배출하는 항목들과 알림들을 다시 항목들로 변환 후 배출해야 하는데
이때 배출하는 항목들을 알림 객체로 감싸서(wrapping) 배출해야 한다면: Materialize
이 알림 객체가 다시 풀릴 수(unwrapping) 있다면: Dematerialize
6. Completed/Error
Observable이 배출하는 모든 객체를 무시하고 completed/error 알림만 전달해야 한다면: IgnoreElements
7. 처음 항목 추가
Observable이 가진 항목을 그대로를 배출하지만 배출 전에 다른 항목들을 먼저 배출될 수 있도록 추가해야 한다면: StartWith
8. 버퍼
Observable이 배출하는 항목들을 모아둔 후 버퍼로 다시 배출해야 한다면: Buffer
그 중 마지막에 배출된 항목이 추가된 버퍼만 배출해야 한다면: TakeLastBuffer
9. Observable 나누기
하나의 Observable을 여러 Observable로 나눠야 한다: Window
10. 조회
Observable이 배출한 특정 항목을 조회해야 하는데
Observable이 완료되기 전에 마지막으로 배출한 항목을 조회해야 한다면: Last
배출한 첫 번째 항목을 조회해야 한다면: First
11. 재배출
Observable의 특정 항목만 재배출 해야 하는데
어떤 조건을 만족시키지 않는 항목들을 필터링해서 재배출 해야 한다면: Filter
첫 번째 항목만 재배출 해야 한다면: First
처음 몇 개의 항목들만 재배출 해야 한다면: Take
마지막 항목만 재배출 해야 한다면: Last
몇 번째 위치한 항목만 재배출 해야 한다면: ElementAt
재배출할 항목들이 처음 몇 개 이후의 것들일 경우
처음 몇 개의 항목들 이후의 것들 이라면: Skip
특정 조건을 만족시킨 이후의 것들 이라면: SkipWhile
초기 특정 시간 이후에 배출된 항목들 이라면: Skip
두 번째 Observable이 항목을 배출한 이후의 것들 이라면: SkipUntil
마지막 항목 몇 개를 제외한 경우
마지막 몇 개 항목을 제외한 것들 이라면: SkipLast
특정 조건을 만족할때 까지의 것들 이라면: TakeWhile
소스 Observable이 완료되기 이전 특정 시간 동안 배출한 것들을 제외한 것이라면: SkipLast
두 번째 Observable이 항목을 배출한 이후에 배출된 것들을 제외한 것이라면: TakeUntil
주기적으로 Observable을 샘플링해서 재배출해야 한다면: Sample
특정 시간이 지나고 나서 배출된 항목들만 재배출 해야 한다면: Debounce
만약 중복된 항목이 바로 연이어 배출된다면: DistinctUntilChanged
항목 배출이 시작된 이후에 얼마 동안 구독을 지연시켜야 한다면: DelaySubscription
12. 첫번째 Observable 재배출
항목들을 배출하는 Observable 컬랙션 중에 첫 번째로 항목을 배출하는 Observable의 항목만 배출해야 한다면: Amb
13. 평가
Observable이 배출한 연속된 항목 전체를 평가해야 한다
배출되는 항목 순서대로 각각에 집계 함수를 적용해서 결과를 배출해야 한다면:Scan
14. 자료구조
Observable이 배출한 전체 항목들을 특정 자료구조로 배출하고 싶다면 To
15. 스케줄러
연산자가 특정 스케줄러 상에서 동작해야 한다면: SubscribeOn
연산자가 옵저버한테 알림을 줄 때 동작할 스케줄러를 지정해야 한다면: ObserveOn
16. 특정 이벤트
특정 이벤트가 발생 할 때 Observable 상에서 어떤 동작을 실행시켜야 한다면: Do
17. 오류
오류가 발생했을 때 Observable이 옵저버에게 오류를 알려야 하다면: Throw
만약 항목이 배출되지 않은 상태에서 특정 시간이 경과했다면: Timeout
18. 복구
자연스럽게 Observable을 복구해야 하는데타임 아웃이 발생한 경우
백업 Observable로 전환시켜 복구해야 한다면: Timeout
앞에서 발생한 오류 알림으로부터 복구해야 한다면: Catch
이전 Observable에 재구독을 시도해야 한다면: Retry
19. 리소스 -> Observable
동일한 생명주기를 가진 리소스를 Observable로 생성해야 한다면: Using
20. 퓨처
Observable을 구독하고 Observable이 완료될 때까지 블로킹 상태에 있는 퓨처(Future)를 전달 받고 싶다면: Start
21. publish
구독자의 요청 전까지 Observable이 항목을 구독자에게 배포하지 말아야 한다면: Publish
그리고 배출 이후에 구독자가 구독을 시작했다 하더라고 동일하게 배출 순서를 전달해야 한다면: Replay
하지만 모든 구독자가 한번에 구독을 해지할 수 있어야 한다면: RefCount
그리고 배출을 시작하도록 Observable에게 요청해야 한다면: Connect
참고
- Which Operator do I use? by Dennis Stoyanov (a similar decision tree, specific to RxJS operators)
출처 : http://reactivex.io/documentation/ko/operators.html
'RxSwift' 카테고리의 다른 글
[Rxswift] Operators - To (0) | 2021.12.14 |
---|---|
[Rxswift] Operators - 연결(9) (0) | 2021.12.14 |
[RxSwift] Operators - 수학과 집계(8) (0) | 2021.11.29 |
[RxSwift] Operators - 조건과 Boolean(7) (0) | 2021.11.29 |
[RxSwift] Operators - 유틸리티(6) (0) | 2021.11.29 |
댓글