RxSwift - 1. Observable

박성민·2021년 3월 12일
0

RxSwift

목록 보기
1/4

RxSwift

  • An API for asynchronous programming with observable streams
  • ReactiveX는 관찰 가능한 시퀀스를 사용하여 비동기식 및 이벤트 기반 프로그램을 구성하기 위한 라이브러리 입니다.
  • RxSwift는 ReactiveX 라이브러리를 Swift로 구현한 것입니다.
  • KVO, Notification 보다 단순하고 직관적인 코드를 작성할 수 있다.

Observable

  • Observable: Event를 방출(emit)합니다.
  • Observer(Subscriber): Observable을 구독(subscribe)하여 전달되는 이벤트를 처리합니다.

Observable이 방출하는 3가지 이벤트

Next

  • Observable에서 발생한 새로운 이벤트는 Next 이벤트를 통해 전달됩니다. 이벤트에 값이 포함되어있으며, 이 과정을 Emission이라 합니다.

Error, Completed

  • Observable에서 에러가 발생하면 Error 이벤트가 전달되고, 정상적으로 종료되면 Completed 이벤트가 전달됩니다.
  • 두 이벤트는 Observable의 Lifecyle에서 가장 마지막에 전달됩니다. 이 두 이벤트가 전달되면 Observable이 종료되어 resource가 정리되기 때문에 이후에 다른 이벤트가 전달되지 않습니다.
  • Error와 Completed 이벤트는 Emission이라고 하지 않고 Notification이라고 합니다.

Mable Diagram

Rx의 흐름을 시각적으로 표현합니다.

화살표는 상대적인 시간의 흐름이고 원은 이벤트, 더 정확히 Next Event를 말합니다. 화살표 오른쪽에 있는 vertical bar는 완료, 즉 Completed Event이며, Observable의 life-cycle은 이곳에서 종료됩니다.

Error Event는 엑스로 표시하며, completed event와 마찬가지로 라이프사이클이 종료됩니다.

create 연산자

	Observable<Int>.create { (observer) -> Disposable in 
    observer.on(.next(0)) 	
    observer.onNext(1)
    
    observer.onCompleted() 		
    
    return Disposables.create() 
    }

0, 1을 방출하고 종료

from 연산자

Observable.from([0,1])

위 코드는 Observable을 생성하고 이벤트가 어떤 순서로 전달되어야 하는지 정의합니다.
위의 코드만으로는 정수가 방출되거나 이벤트가 발생하지 않습니다. 이벤트가 발생하기 위해서는 Observer가 Observable을 구독해야 합니다.

참고 및 출처

http://reactivex.io/documentation/ko/observable.html
https://www.youtube.com/watch?v=m41N4czHGF4&list=PLziSvys01Oek7ANk4rzOYobnUU_FTu5ns&index=2&ab_channel=KxCoding
https://yeonduing.tistory.com/60

profile
iOS시작~

0개의 댓글