Rx ๋Š” ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” API ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ชจ๋˜ ์›น์—์„œ ๋น„๋™๊ธฐ ํ†ต์‹ ์€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์˜ ํŠน์ง•์„ ์ด์šฉํ•ด ์ฝœ๋ฐฑ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝœ๋ฐฑ์ง€์˜ฅ์„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ”„๋กœ๋ฏธ์Šค๊ฐ€ ๋‚˜์˜ค๊ณ  ๋” ๋‚˜์•„๊ฐ€์„œ ํ”„๋กœ๋ฏธ์Šค ๊ธฐ๋ฐ˜์˜ async/await ๋„ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋™๊ธฐ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ์„ ํ•œ๋‹ค๋ฉด ๊ธฐ๋‹ค๋ฆผ์˜ ์—ฐ์†

๋˜ ๋‹ค๋ฅธ ํ•ด๊ฒฐ๋ฒ•์œผ๋กœ ๋“ฑ์žฅํ•œ๊ฒƒ์ด RxJS ์ž…๋‹ˆ๋‹ค. RxJS ๋Š” ์š”์•ฝํ•˜์ž๋ฉด ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. RxJS ๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์ „์— ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…์„ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

RxJS ์—์„œ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ์œ„ํ•ด ์—ฌ๋Ÿฌ ์—ฐ์‚ฐ์ž๋“ค์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์—ฐ์‚ฐ์ž๋“ค์ด ๊ฝค ๋งŽ์•„ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด๋ คํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ learnrxjs ๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

RxJS ์‚ฌ์šฉ๋˜๋Š” Operator(์—ฐ์‚ฐ์ž)๋“ค์„ ์•Œ์•„๋ณด๋ คํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž๋“ค์ด ๋„ˆ๋ฌด ๋งŽ์•„ ์–ด๋–ค๊ฒƒ๋“ค์ด ์žˆ๋Š”์ง€ ์กฐ๊ธˆ์”ฉ ์‚ดํŽด๋ณด๊ณ  ์‹ถ์–ด ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

RxJS ๋ฅผ ๋ฐฐ์šฐ๋ฉฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์—ฐ์‚ฐ์ž ํƒ€์ž…

ํŠœํ† ๋ฆฌ์–ผ

Observable

์˜ต์ €๋ฒ„๋ธ”์€ ๊ณ„์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ์—ญํ• ์„ํ•˜๋ฉฐ ๋ณดํ†ต ๋ณ€์ˆ˜ ๋’ค์— $ ํ‘œ์‹œ๋ฅผ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด ์˜ต์ €๋ฒ„๋ธ”์ด ๋งŒ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฉ์ถœ(emit) ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Observer

์˜ต์ €๋ฒ„๋Š” ์˜ต์ €๋ฒ„๋ธ”์ด ๋ฐฉ์ถœ(emit) ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„๋ณด๋Š” '๊ตฌ๋…์ž' ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์˜ต์ €๋ฒ„๋ธ”์„ ๊ตฌ๋…ํ•˜๊ณ , ์˜ต์ €๋ฒ„๋ธ”์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฉ์ถœํ•˜๋ฉด ์˜ต์ €๋ฒ„๋Š” ๊ตฌ๋…์„ ํ•˜๊ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ์ข…์˜ Notification ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋ฌธ์„œ