RxSwift는 비동기적으로 일어나는 일들에 대해 보다 직관적이고 쉽게 코드를 작성할 수 있도록 사용하는 라이브러리이다.
기존에는 비동기작업에서 애플에서 제공하는 API를 사용했다.
하지만 내용이 많아질 수록 복잡해지고 가독성이 떨어지며
복합적인 비동기 코드들은 부분별로 나눠쓰기 어렵고,
다양한 외부 요인 (네트워킹, 사용자 입력 등)들이 있어 어떠한 순서로 작동할지 예측하기 어려우며 완전히 다른 순서로 실행될 수 있다.
→ 그래서 비동기적 상황에서 보다 직관적이고 효율적인 코드를 작성할 수 있도록 RxSwift를 사용한다.
Observer는 Observable 을 구독한다.
Observable
관찰 가능한
Observer
관찰자
Observable이 이벤트를 발생시키면 Observer(관찰자)가 그 순간을 감지하고 준비된 연산을 실행시켜 결과를 리턴한다. 이를 “Observer는 Observable 을 구독한다.“ 라고 표현한다. 이 매커니즘은 하나의 코드 블럭이 실행 결과를 리턴할 때까지 기다릴 필요 없이 계속해서 다음 코드 블럭을 실행할 수 있기 때문에 한번에 여러개의 코드를 실행 시킬 수 있다.
Observable
로 비동기 호출을 정의한다.Observer(관찰자)
를 Observable 객체에 연결 시킨다. (또한, 동시에 Observable의 동작을 초기화 한다).Observer(관찰자)
의 메서드는 (Observable이 배출하는)항목들 또는 리턴 값을 사용해서 연산을 시작한다.enum Event<Element> {
case next(Element) // next element of a sequence
case error(Swift.Error) // sequence failed with error
case completed // sequence terminated successfully
}
onNext
Observable은 새로운 항목들을 배출할 때마다 이 메서드를 호출한다.
Observable이 배출하는 항목을 파라미터로 전달 받는다.
onError
Observable은 기대하는 데이터가 생성되지 않았거나 다른 이유로 오류가 발생할 경우 오류를 알리기 위해 이 메서드를 호출한다.
이 메서드가 호출되면 onNext나 onCompleted는 더 이상 호출되지 않는다.
onError 메서드는 오류 정보를 저장하고 있는 객체를 파라미터로 전달 받는다.
onCompleted
오류가 발생하지 않았다면 Observable은 마지막 onNext를 호출한 후 이 메서드를 호출한다.
Observable이 방출한 값을 가공하여 결과 값으로 반환
Scheduler는 Dispatch Queue
와 같다고 함.
(나중에 더 알아봐야 할듯.)