ReactiveX

- AโB๋ฅผ ํธ์ถํ๊ณ ๋ฆฌํด๋ฐ๋ ํ์
์ด Tํ์
์ด๋ผ๊ณ ํ ๋,
getData() โ T๋ผ๊ณ ๋งํ ์ ์์- ์ด๋ฌํ ๋ฐฉ์์ sync๋ฐฉ์์ผ๋ก ๋ฆฌํด ํ์ ์ด ํ๋์ธ ๊ฒฝ์ฐ ํ์ ๊ฐ๋ฅ
- ๋๊ธฐ ๋ฐฉ์์ผ๋ก AโB๋ฅผ ํธ์ถํ๋๋ฐ ๋๊ฒจ์ฃผ๋ ๊ฐ์ด ์ฌ๋ฌ๊ฐ๋ผ๋ฉด, ์ด๋ฅผ ํ์ํ ์ ์๋ ํ์
์ด๋ผ๋ฉด
getDate() โ Iterable[T]์ฒ๋ผ ๋ฆฌํด๋ฐ๋ ํ์ ์ ์ ์ธํด์ค ์ ์์ - ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด, Aโ B๋ฅผ ํธ์ถํ๋๋ฐ, ๋น๋๊ธฐ์ ์ผ๋ก ์ธ์ ๊ฐ ๋์ค์ T๋ผ๋ ํ์
์ ๋ฐ์ ์ ์๋ค๊ณ ํ๋ฉด,
getData() โ Future[T]์ฒ๋ผ ์ธ์ ๊ฐ ๋ฐ์ ์ ์์์Future,Promise๋ฑ์ผ๋ก ์ ์ธํด๋์ ์ ์์ - ReactiveX๋ ๋น๋๊ธฐ๋ก ํธ์ถํ๋๋ฐ ์ฌ๋ฌ๋ฒ ๋น๋๊ธฐ๋ก ํธ์ถ๋๋ ๊ตฌ์กฐ๋ ๊ฐ๋ฅํ๋ค๋ ์ปจ์
์ผ๋ก, ๋๊ธฐ ์ฒ๋ฆฌ์ ์ฌ๋ฌ ํญ๋ชฉ๋ค์ ๋ํด ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ํ์ฅํ ๊ฐ๋
- ์ด๋ฅผ
getData() โ Obeserable[T]์ฒ๋ผ ํํํจ
- ์ด๋ฅผ
๋น๋๊ธฐ๋ก ํ๋ฒ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ

ํ๋ฒ๋ง ํธ์ถํ๊ธฐ ๋๋ฌธ์ Push single๋ก ๋ณผ ์ ์์
๋น๋๊ธฐ๋ก ์ฌ๋ฌ๋ฒ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ

- context1์ด context2์ ๋น๋๊ธฐํจ์๋ฅผ ์คํํ์ฌ ๋ฐ๋ก ๋ฆฌํด๋จ
- ์ด ๊ณผ์ ์์
๋ฐ์ธ๋ฉ(binding)์ ํด๋์ผ๋ฉด, ํด๋น ๋น๋๊ธฐ ํธ์ถ์ ๋ํด n๋ฒ, ์ฆ ์ฌ๋ฌ๋ฒ ํธ์ถ์ด ๊ฐ๋ฅํจ - ๋คํธ์ํฌ๋ฅผ ์์ฒญํ๊ฑฐ๋, ์ด๋ฒคํธ๊ฐ ์ฌ๋ฌ๋ฒ ๋ฐ์ํ๊ฑฐ๋, ๋ค์ด๋ก๋ ๋ฑ์ ํ์
- ์ด๋ฌํ ๋ถ๋ถ์ ๋ํด ์์ผ๋ก๋ ์ด๋ฌํ API๋ค์ด ์๊ธธ ์ ์๋ค๊ณ ์์ ํ๋ ๊ฒ์ด ReactiveX์ ์ฌ์

Observable[T]๋T๋ผ๋ ํ์ ์ ๊ฐ์ง๊ณ ์ฌ๋ฌ๋ฒ ํธ์ถํ ๋๋ง๋ค Observableํ๋ ์ ๋ค์ด subscribeํด์ ํธ์ถํ๋๋ก ๋ง๋ฆ- RX๋ ๋ฐ์ธ๋ฉ์ ํตํด์ ๊ณ์ํด์ ๋ค์ ์ด๋ฒคํธ๊ฐ ์ฌ ๋๋ง๋ค subscribe๋ฅผ ํตํด์ ํด๋ก์ ๋ฅผ ์ ๋ฌ๋ฐ๋ ํํ
- ์ฆ ํด๋ก์ ๋ฅผ ์ฌ๋ฌ๋ฒ ํธ์ถํ๋ ํํ