→ ReactiveX 는 옵저버블 스트림으로 비동기 프로그래밍을 돕는 API 입니다.
ReactiveX 는 비동기 프로그래밍과 옵저버 패턴 을 사용하기 쉽도록 돕는 라이브러리반응형 프로그래밍 이라고도 함ReactiveX 를 적용한 Swift 라이브러리를 RxSwift 라고 함RxSwift, RxJava, RxPython 등 웬만한 메이저 언어들에 다양하게 지원. ReactiveX 는 다양한 분야의 개발자들이 애용하는 라이브러리로, 가독성이 좋은 코드와 유지보수가 좋은 코드를 작성하는 데 도움을 줌
RxSwift는 애플이 아닌 마이크로소프트가 제공하는 서드파티 라이브러리RxSwift와 거의 똑같은 기능을 제공하며 애플이 개발한Combine이라는 라이브러리가 존재
Combine
iOS 13 이상부터 지원하는 라이브러리RxSwift
RxJava, RxPython, RxJS 등 다른 언어를 사용하는 개발자들과 원활한 대화 가능RxJava 로 안드로이드 앱 개발을 한다면, 중요한 로직등을 싱크를 맞춰서 함께 설계할 수 있게 됨RxSwift 로 작성이 된 상태로 동작RxSwift 사용 비율이 Combine 보다 높음RxSwift 를 이해한다면 Combine 의 이해는 매우 쉬울 것Observable 개념
- Observable = 관측 가능한 대상
Observable 은 관측 가능한 대상이며, 이벤트와 데이터를 방출하는 클래스Observable 에서 이벤트를 방출하면, 이를 구독하고 있던 구독자(=관찰자)들이 그에 반응하여 어떠한 로직을 수행Observable 을 구독하는 것을 subscribe 라고 하며, 이를 구독하고 관찰하는 관찰자를 Observer 라고 함예를 들어, Observable 을 구독하고 있는 구독자가 “나는 Observable 에서 정수 값이 방출되어 나오면, 그 값에 2를 곱해서 사용할래” 라는 세팅을 마쳐놓았고, Observable 에서 3이라는 값이 방출되면, Observer 는 6이라는 값을 사용하게 되는 것이죠.
시냇물, 흐름, 줄기 라는 의미를 갖습니다.Observable 은 일반적으로 선언하는 변수와 다르게 스트림의 성질을 갖기 때문입니다.
Observable 은 계속해서 새로운 값을 “방출” 가능Observable 이벤트 방출 그림

Observable 에서 이벤트(값) 을 방출할 때는 상태를 함께 방출합니다.
onNext : 정상적인 데이터 방출onError : 에러 방출onCompleted : 옵저버블의 종료 방출Single 이란
옵저버블 중에서, 오직 하나의 값만을 방출하는 옵저버블을 Single 이라고 합니다.
onSuccess: 옵저버블의 onNext 와 동일onFailure: 옵저버블의 onError 와 동일▪️ Subject 란
옵저버블 중에서 외부에서 값을 넣어줄 수 있는 옵저버블을 Subject 라고 합니다.
BehaviorSubject : 초깃값이 있는 Subject. 구독시 가장 최근에 방출된 값을 받음.
PublishSubject : 초깃값이 없는 Subject. 구독 이후로 방출된 값을 받음.