RxJS ๊ธฐ์ดˆ, ํ•ต์‹ฌ ๐Ÿ‰

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 ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค โš™๏ธ

์ด๊ฒƒ ์—ญ์‹œ ์™ธ์šด๋‹ค..! ๊ฒฐ๊ตญ ์ด ์‚ฌ์ดํด๋กœ RxJS๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ๊นŒ.

  1. ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ Observable๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. (from, of, fromEventโ€ฆ)

  2. ์˜คํผ๋ ˆ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ถ”์ถœํ•œ๋‹ค.

    • ๋˜๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ Observable์„ ํ•˜๋‚˜์˜ Observable๋กœ ํ•ฉ์น˜๊ฑฐ๋‚˜

    • ํ•˜๋‚˜์˜ Observable์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Observable๋กœ ๋งŒ๋“ ๋‹ค.

  3. ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” Observer๋ฅผ ๋งŒ๋“ ๋‹ค.

  4. Observable์˜ subscribe๋ฅผ ํ†ตํ•ด Observer๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.

  5. Observable ๊ตฌ๋…์„ ์ •์ง€ํ•˜๊ณ  ์ž์›์„ ํ•ด์ง€ํ•œ๋‹ค.


[Abel ko]
Written by@[Abel ko]
์ด ์„ธ์ƒ์„ ๋จผ์ง€์ฒ˜๋Ÿผ ์‚ด๋‹ค ๊ฐˆ ๐Ÿ‘จ๐Ÿฝโ€๐Ÿ’ป์ž…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ†ตํ•ด ์‚ฌํšŒ์ ๊ธฐ์—…์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฟˆ์ž…๋‹ˆ๋‹ค.โญ๏ธ

GitHubFacebook