RxJS์๋ 4๊ฐ์ง ํต์ฌ์ด ์๋ค. ์ฒ์๋ณด๊ณ ๋ฐ๋ก ์ดํดํ๊ธฐ ์ด๋ ต๊ธฐ์ ์ผ๋จ ๋ฌด์์ ์ธ์ฐ๊ณ , ์์ฃผ ๋ณด๊ณ ๊ฐ๋ฐ ํ๋ฉด์ ์ ์ฐจ ์ดํดํ๋ฉด ์ข์๊ฒ ๊ฐ๋ค.
Observable, Operator, Observer, Subscription
Observable
โ 1) ์๊ฐ์ ์ถ์ผ๋ก ์ฐ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปฌ๋ ์ ์ ํํํ ๊ฐ์ฒด
โ 2) ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ์์ค๋ฅผ Observer์๊ฒ ์ ๋ฌํ๋ค.
Operator
โ 1) observable์ ์์ฑ ๋ฐ ์กฐ์ํ๋ ํจ์.
โ 2) ํ์ฌ์ Observable ์ธ์คํด์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํญ์ ์๋ก์ด Observable ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ค.
Observer
โ 1) Observable์ ์ํด ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์๋นํ๋ ์ฃผ์ฒด.
โ 2) next, error, complete ํจ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด์ด๋ค.
โ 3) ๋ฐ์ดํฐ ์ ๋ฌ์์๋ next, ์๋ฌ์์๋ error, ๋ฐ์ดํฐ ์ ๋ฌ ์๋ฃ์์๋ complete ํจ์๊ฐ ํธ์ถ๋๋ค.
โ 4) Observable๊ณผ subscribe ๋ฉ์๋๋ฅผ ํตํด ์ฐ๊ฒฐ๋๋ค.
const observer = {
next: x => console.log(x),
error: err => console.err(err),
complete: ()=> console.log(โdoneโ)
} ;
click$.subscribe(observer);
Subscription
โ 1) Observable.prototype.subscribe์ ๋ฐํ ๊ฐ.
โ 2) ์์์ ํด์ ๋ฅผ ๋ด๋น.
โ 3) ๋ฐ์ดํฐ๋ฅผ ๋์ด์ ์ ๋ฌ๋ฐ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ unsubscribe ๋ฉ์๋๋ก ์์์ ํด์ง.
const subscription = click$.subscribe(observer);
subscription.unsubscribe();
์ด๊ฒ ์ญ์ ์ธ์ด๋ค..! ๊ฒฐ๊ตญ ์ด ์ฌ์ดํด๋ก RxJS๋ฅผ ์ฌ์ฉํ๋๊น.
๋ฐ์ดํฐ ์์ค๋ฅผ Observable๋ก ๋ณ๊ฒฝํ๋ค. (from, of, fromEventโฆ)
์คํผ๋ ์ดํฐ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ถ์ถํ๋ค.
๋๋ ์ฌ๋ฌ๊ฐ์ Observable์ ํ๋์ Observable๋ก ํฉ์น๊ฑฐ๋
ํ๋์ Observable์ ์ฌ๋ฌ ๊ฐ์ Observable๋ก ๋ง๋ ๋ค.
์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๋ Observer๋ฅผ ๋ง๋ ๋ค.
Observable์ subscribe๋ฅผ ํตํด Observer๋ฅผ ๋ฑ๋กํ๋ค.
Observable ๊ตฌ๋ ์ ์ ์งํ๊ณ ์์์ ํด์งํ๋ค.