Observable
ํน์ Observable Sequence , Sequence์๋ ๊ฐ์ ๋ง์ด๋ค. ๊ด์ฐฐ ๊ฐ๋ฅํ ๊ฐ์ฒด์ด๋ฉฐ, ๊ตฌ๋
์๊ฐ ์ด๋ฅผ ๊ตฌ๋
ํ์ฌ โ์ด๋ฒคํธโ๋ฅผ ๋ฐ์ ์ ์๋ค. ์ด๋ฒคํธ์๋ 3๊ฐ์ง ์ข
๋ฅ๊ฐ ์๋ค.
์ด๋ฒคํธ์ ์ ๋ฌ ๋ฐฉํฅ : Observable
-> Observer
์ด๋ฒคํธ์ ๊ด์ฐฐ ๋ฐฉํฅ : Observable
<- Observer
์ด๋ฒคํธ์ ์ข
๋ฅ
Observable์ 3๊ฐ์ง ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋
์์๊ฒ ์ ๋ฌํ๋๋ฐ, ๊ตฌ๋
์๋ ์ด๋ฅผ ๋ฐ์ ํด์ผํ ์ผ๋ค์ ์ฒ๋ฆฌํ๋ค.
- Next: Emission์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ์์(๊ฐ)๋ค์ ๋ฐฉ์ถํ๋ค.
- Completed: Observable์ด โ์๋ฌ ๋ฐ์ ์์ด ์ ์์ ์ผ๋ก ์ข
๋ฃ๋ ๋โ ์ ๋ฌ๋๋ค. Observable์ ์๋ช
์ฃผ๊ธฐ๊ฐ ๋๋๋ค.
- Error: Observable์ด โ์๋ฌ๋ก ์ธํด ์ข
๋ฃ๋ ๋โ ์ ๋ฌ๋๋ค. Observable์ ์๋ช
์ฃผ๊ธฐ๊ฐ ๋๋๋ค.
Marble Diagram
https://rxmarbles.com
Observable์ ์์ฑ์์
1. Create ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ์์ฑ
2. From ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ์์ฑ
SubScribe
Observable์ Observer์๊ฒ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋ค. ์ด ์ ๋ฌ๋๋ ์์ ์ observer๊ฐ observable์ subscribeํ๋ ์๊ฐ์ด๋ค. ์ฆ, ๊ด์ฐฐ(๊ตฌ๋
)์ ํ์ง ์์ผ๋ฉด ์ด๋ฒคํธ๋ ์ ๋ฌ๋์ง ์๋๋ค๋ ๋ง๊ณผ ๊ฐ๋ค.
๊ตฌ๋
์ ํ๊ฒ๋๋ฉด Event
๋ฅผ ์ ๋ฌ๋ฐ๊ฒ๋๊ณ , ์์์ ๋งํ๋ฏ์ด 3๊ฐ์ง ์ข
๋ฅ๊ฐ ์๊ธฐ ๋๋ฌธ์ switch๋ก ๋ถ๊ธฐํ ์ ์๋ค.
Switch๋ฌธ ๋ฐ์์ onNext๋ก ์ ๋ฌ๋ฐ์ ๊ฐ์ ์ง์ ์ ๊ทผํ๋ ค๋ฉด event.element
๋ก ์ ๊ทผํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ Subscribe(๊ด์ฐฐ)์ ํตํด ์ ๋ฌ๋ฐ๋ ์ด๋ฒคํธ๋ ํ๋ฒ์ ํ๋์ ์ด๋ฒคํธ๋ง ์ ๋ฌ๋ฐ๊ฒ๋๋ค.
Disposable
Observable๊ณผ ๊ด๋ จ๋ ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํ๋ ์ฝ๋
์ฌ๊ธฐ์ Disposed๋ Observable์ด ์ ๋ฌํ๋ ์ด๋ฒคํธ๊ฐ ์๋๋ค. Observable๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๋ฆฌ์์ค๊ฐ ์ ๊ฑฐ๋ ํ์ Disposed ํด๋ก์ ๊ฐ ํธ์ถ๋๋ค.
Disposable ์ฉ๋
- Observable๊ณผ ๊ด๋ จ๋ ๋ฆฌ์์ค๋ค์ ์ ๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ค.
- ์คํ ์ทจ์์ ์ฌ์ฉ๋๋ค.
๋ง๋ค์ด๋จ๋ DisposeBag
ํ๋กํผํฐ์ ์๋ก์ด DisposeBag
๋ฅผ ๋ฃ์ผ๋ฉด bag์์ ์๋ Disposable๋ค์ด ํด์ ๋๋ค.
๋๋ ์ต์
๋๋ก ํด์ nil์ ๋ฃ์ด์ค๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค ์ ์๋ค.
Disposable์ ์คํ์ทจ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
Operators (์ฐ์ฐ์)
Observable์ ์์ฑ, ๋ฐฉ์ถ, ํํฐ๋ง ๋ฑ์ ๋ค์ํ ๋ฉ์๋๋ค์ด ์๋๋ฐ ์ด๊ฒ๋ค์ ํตํ์ด Operators๋ผ๊ณ ํ๋ค.
Map, filter, takeโฆ.. ๋ฑ ๊ฝค ์ฌ๋ฌ์ข
๋ฅ๊ฐ ์๋ค. ๋ง๋ธ ๋ค์ด์ด๊ทธ๋จ์ ํตํด์ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์๋ค.
RxMarbles: Interactive diagrams of Rx Observables
Take operator
Take operator๋ emit์ 5ํ ์คํํ๋ค.