티스토리 뷰
안녕하세요 Hani입니다.
RxSwift의 Observable과 subscribe에 대하여 알아보았고,
이번엔 Operator에 대하여 알아볼 거예요. 🔥
operator는 Observable에 적용시키는 method입니다.
operator가 Observable에 어떻게 적용되는지는 Marble Diagram이라는 그림에 잘 나와있어요.
Marble Diagram
화살표 모양의 꼬챙이가 Observable이고 끼워져 있는 각 Marble은 Observable이 방출하는 event입니다.
화살표 끝부분이 일자로 막혀있는 부분은 Observable이 끝났다는 의미이고,
사각 박스는 operator이며, operator의 결과물은 Observable입니다.
Observable에 operator를 적용시킨 것에 또 operator를 연속적으로 적용시킬 수 있겠죠?
이걸 Chaining operators라고 합니다.
마블 다이어그램을 보고, 쓰고 싶은 operator를 찾아서 가져다 쓸 수도 있지만
어떤 operator가 있는지 한 번쯤은 둘러볼 필요가 있다고 생각돼서 하나씩 짚어볼 생각입니다.
나중에 어렴풋이 생각나겠죠 ^^..
이번 포스팅에서는 Observable을 생성하는 operator에 대하여 알아볼 거예요.
시작합니다..! 🔥
Create
옵저버의 메서드(onNext, onCompleted, onError)를 호출하여 맨 처음부터 Observable를 생성합니다.
Observable를 subscribe해보면 값이 Observable을 만들 때 호출한 메서드 순서대로 내용이 출력됨을 알 수 있습니다.
Empty
어떤 것도 방출(onNext)하지 않는, 그러나 완료되는(onCompleted) Observable을 생성합니다.
Never
어떤 것도 방출하지 않으며 완료되지도 않는 Observable을 생성합니다.
Throw
어떤 것도 방출하지 않으며 에러로 마무리되는 Observable을 생성합니다.
From
한 배열을 통째로 넣어서 차례대로 출력해주는 Observable을 생성해주는 Operator인 From입니다.
from안에 배열을 집어넣어서 전달해줍니다.
Just
단 한 번, 값을 방출하는 Observable을 생성해주는 Operator인 Just입니다.
just에 원하는 값을 집어넣어서 전달해줍니다.
배열을 넣으면 하나씩 값이 넘어오는 from과 달리 배열이 통째로 넘어옵니다.
Range
특정 범위의 연속적인 정수를 방출하는 Observable을 생성해주는 Operator인 Range입니다.
Repeat
같은 값을 반복적으로 방출하는 Observable을 생성해주는 Repeat입니다.
반복 횟수를 take로 정해주지 않으면 값이 무한정 불리기 때문에 마블 다이어그램에 나와있는 것처럼 완료되지 않습니다.
Defer
코드를 보면 observable이라는 변수는 Observable 객체, 근데 이제 deferred가 곁들여진 것을 참조하고 있습니다.
Defer operator는 Observer가 observable을 subscribe하기 전까지 Observable를 생성하지 않고 미루다가,
subscribe하면 Observable를 새로 생성하도록 만듭니다.
Timer
2개의 전달 인자(지연 시간, 스케쥴러)로 구성된 Timer입니다.
주어진 지연시간 이후에 하나의 값이 방출되는 Observable을 생성해주는 Timer입니다.
3개의 전달인자(지연 시간, 주기, 스케쥴러)로 구성된 Timer입니다.
주어진 지연시간 이후에 주기마다 값이 방출되는 Observable을 생성해주는 Timer입니다.
3개의 전달 인자를 갖는 Timer에 대한 마블 다이어그램은 없지만..
반복 횟수를 take로 정해주지 않으면 값이 무한정 불리기 때문에 완료되지 않습니다.
Interval
주어진 시간 간격마다 연속적인 정수를 방출하는 Observable을 생성해주는 Interval입니다.
반복 횟수를 take로 정해주지 않으면 값이 무한정 불리기 때문에 마블 다이어그램에 나와있는 것처럼 완료되지 않습니다.
3개의 전달인자를 받는 Timer와 다른 점은
Timer는 처음 지연 시간과 이후 주기가 다를 수 있지만
Interval은 시간 간격을 하나만 받기 때문에 지연 시간과 주기가 같습니다.
References
http://reactivex.io/documentation/operators.html
'RxSwift' 카테고리의 다른 글
[RxSwift] subscribe, observe / Scheduler 관리 (0) | 2021.07.11 |
---|---|
[RxSwift] Closure ARC / Memory Leak 실험 (0) | 2021.07.10 |
[RxSwift] Subject (0) | 2021.07.07 |
[RxSwift] Operator, Filtering Observables (0) | 2021.07.01 |
[RxSwift] Observable, Subscribe (0) | 2021.06.25 |
- Total
- Today
- Yesterday
- 최단경로 문제
- 벨만포드 알고리즘
- 에드몬드 카프 알고리즘
- 최대 매칭
- IOS
- CPU와 Memory
- CompositionalLayout
- 최단경로 알고리즘
- 포드 풀커슨 알고리즘
- State Restoration
- WWDC19
- WWDC16
- 벨만포드 시간복잡도
- 네트워크 플로우
- WWDC17
- 코딩대회
- 최단경로문제
- Testable
- 컴퓨터 추상화
- WWDC21
- test coverage
- mach-o
- 네트워크 유량
- 부스트캠프 6기
- HIG
- 다익스트라 시간복잡도
- MeTal
- rxswift
- 강한 순환 참조
- observeOn
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |