[RxSwift] RxSwift 구성요소

임주희·2022년 11월 29일
0

RxSwift

목록 보기
1/5
post-thumbnail

RxSwift는 비동기적으로 일어나는 일들에 대해 보다 직관적이고 쉽게 코드를 작성할 수 있도록 사용하는 라이브러리이다.


배경

기존에는 비동기작업에서 애플에서 제공하는 API를 사용했다.

  • Notification Center
  • The delegate pattern
  • Grand Central Dispatch(GCD)
  • Closures

하지만 내용이 많아질 수록 복잡해지고 가독성이 떨어지며
복합적인 비동기 코드들은 부분별로 나눠쓰기 어렵고,
다양한 외부 요인 (네트워킹, 사용자 입력 등)들이 있어 어떠한 순서로 작동할지 예측하기 어려우며 완전히 다른 순서로 실행될 수 있다.

→ 그래서 비동기적 상황에서 보다 직관적이고 효율적인 코드를 작성할 수 있도록 RxSwift를 사용한다.


RxSwift 동작 방식

Observer는 Observable 을 구독한다.

Observable 관찰 가능한

Observer 관찰자

Observable이 이벤트를 발생시키면 Observer(관찰자)가 그 순간을 감지하고 준비된 연산을 실행시켜 결과를 리턴한다. 이를 “Observer는 Observable 을 구독한다.“ 라고 표현한다. 이 매커니즘은 하나의 코드 블럭이 실행 결과를 리턴할 때까지 기다릴 필요 없이 계속해서 다음 코드 블럭을 실행할 수 있기 때문에 한번에 여러개의 코드를 실행 시킬 수 있다.

  1. 비동기 메소드 호출로 결과를 리턴받고 필요한 동작을 처리하는 메서드를 정의한다.
  2. Observable로 비동기 호출을 정의한다.
  3. 구독을 통해 Observer(관찰자)를 Observable 객체에 연결 시킨다. (또한, 동시에 Observable의 동작을 초기화 한다).
  4. 필요한 코드를 계속 구현한다. 메서드 호출로 결과가 리턴될 때마다, Observer(관찰자)의 메서드는 (Observable이 배출하는)항목들 또는 리턴 값을 사용해서 연산을 시작한다.

RxSwift 구성요소

  • Observable
  • Operator
  • Scheduler

Observable

  • Observable이 이벤트를 발생시키면 옵저버의 관찰자가 그 순간을 감지하고 준비된 연산을 실행시켜 결과를 리턴한다. 이를 observable을 구독한다고 표현한다.
  • 하나 이상의 observers(관찰자)가 실시간으로 어떤 이벤트에 반응
    → 앱 UI를 업데이트하거나 생성하는지를 처리하고 활용할 수 있게함
  • Observable, Observer가 있으면 어디서든 이벤트를 수신할 수 있음
  • 세가지 유형의 이벤트를 방출
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를 호출한 후 이 메서드를 호출한다.


Operator

Observable이 방출한 값을 가공하여 결과 값으로 반환

Scheduler

Scheduler는 Dispatch Queue와 같다고 함.
(나중에 더 알아봐야 할듯.)


[출처] reactivex.io

0개의 댓글