2.2.1 Subjects 란?

2.1 Observables

2.1.1 Observables 이란?

Rx에서는 관찰자인 Observer가 있고 이벤트를 전달하는 Observable이 있습니다. 그리고 이 두개의 관계는 Observer가 Observable을 구독하는 형태입니다.

Observable은 0..n개의 이벤트를 전달 할 수 있고 이벤트의 종류는 Next, Error, Completed로 3가지가 있습니다. Next로는 이벤트를 전달하고 Error는 에러, Completed는 이벤트 전달의 완료를 의미합니다. Next는 여러번 발생되지만 Error와 Completed는 한번만 발생하고 Error와 Completed가 발생하면 더이상 이벤트를 전달하지 않습니다.

Error나 Completed가 발생하기전에 이벤트의 구독을 중단할 수도 있습니다.

2.1.2 Observable의 생명주기

Cold Observable은 subscribe 한 시점에 stream을 만들기 때문에 subscribe 할 때 마다 각각의 생명주기를 가집니다(공유하지 않는다).

Next이벤트로 데이터를 전달하는 도중에 Error가 발생하거나 Completed가 발생한다면 해당 stream은 더이상 이벤트를 발행하지 않습니다.

2.1.2.1 마블 다이어그램 (Observable의 시퀀스를 이해하는 방법)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5efd0d59-4ce4-4181-b406-82a14f8a513a/Untitled.png

마블 다이어그램은 데이터의 흐름을 도식화 한 형태 입니다. 마블 다이어그램을 통해서 operator가 어떻게 동작하는지 유추 할 수 있습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/290c5e31-c6c9-4cfe-ae50-a3f0a579e9f8/Untitled.png

X는 error를 나타내고 |는 complete를 나타냅니다.

X나 | 이후에는 더이상 데이터가 전달되지 않습니다.

2.1.3 Observable 생성

2.1.3.1 just, of, from

Observable.just("Hello World") // 1개
Observable.of("Hello", "World") // n개
Observable.from(["Hello", "World"]) // array

2.1.4 Observable 구독 (Subscribe)

RxSwift에서 Observable을 subscribe하는 방법이 2가지가 있습니다.

2.1.4.1 Observer