
ReactiveX에서는 observable stream이 있는 비동기 프로그래밍 API를 제공합니다. 다시말해, 비동기 프로그래밍입니다.
예를 들어, 사용자가 프로그램을 사용할 경우 ViewController 내부의 클래스들이 순서대로 동작하는 것이 아니라,
사용자의 입력인 외부적 요인에 따라 코드의 순서가 다르게 실행될 것입니다.
RxSwfit는 ReactiveX를 Swift로 구현한 것입니다.
Observable
- 이벤트에 대한 방출(Emit)을 합니다.
- subscribe를 하지 못합니다. 따라서 이벤트를 방출할 수만 있습니다. 이벤트에 대한 처리가 불가합니다.
Observer
- Observable에서 방출된 이벤트를 처리합니다.
- 전달받은 event를 다른 Observer에게 전달하지 못합니다.
상단에서 언급한 Observable과 Observer를 통해 데이터의 흐름(Stream)을 통제 가능합니다. 이때, Operator를 통해 Stream을 변경, 조작할 수 있습니다.
Stream
- 시간에 따라 값이 달라지는 형태를 의미합니다.
Subsribe
- Observable에서 방출된 event를 처리하기 위해서 subscribe, 즉 구독을 해야 합니다.
- Observable을 구독을 하기 전까지는 event가 방출이 되더라도 아무 일도 발생하지 않을 것입니다.
Observable Sequence
- 유한한 시퀀스와 무한한 시퀀스가 존재합니다.
- creat 연산자를 통해 Observable을 생성합니다.
- subscribe가 되었을 때, Observable이 실행됩니다.
- next를 통해 event를 emit합니다.
- LifeCycle 중 오류가 발생할 경우 error 이벤트를, 정상적으로 완료가 될 경우 completed를 Notification됩니다.
- deinit이 되는 시점, 시퀀스가 종료되는 시점에 Dispose가 됩니다.
- 시퀀스가 종료된 이후에는 더 이상 이벤트가 발생하지 않습니다.
- Infinite Observable Sequence
- 무한한 시퀑스입니다. 이벤트 전달에 있어 끝이 존재하지 않습니다.
- 예를 들어, UI와 관련한 이벤트입니다.
- 사용자아 무엇을 입력하고, 클릭을 하더라도 반응을 끊임없이 제공해야 합니다.
- 따라서 사용자의 입력에 대한 화면 전환이 끊임없이 발생합니다.
- Finite Observable Sequence
- 유한한 시퀀스입니다. 이벤트 전달에 있어 끝이 존재합니다.
- 예를 들어, 대용량의 프로그램을 다운받로드받는 경우가 있습니다.
- 사용자가 파일에 대한 다운을 요청할 경우, 파일을 모두 다운로드를 받게 되면 이벤트에 대한 처리가 종료됩니다.
https://reactivex.io/documentation/observable.html
ReactiveX - Observable
Observable In ReactiveX an observer subscribes to an Observable. Then that observer reacts to whatever item or sequence of items the Observable emits. This pattern facilitates concurrent operations because it does not need to block while waiting for the Ob
reactivex.io
부족한 부분이 많은 글이니 잘못된 정보에 대해 댓글 부탁드립니다!
'iOS' 카테고리의 다른 글
[trouble shooting] XML Data Parse하기! [feat. SWXMLHASE 사용기] (0) | 2024.03.23 |
---|