avatar
Published on

ReactiveX) Observable

Author
  • avatar
    Name
    yceffort

๋ณดํ†ต ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ์—๋Š”, ํ•˜๋‚˜์”ฉ ์ž‘์„ฑ๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋กœ์ง์ด ์‹คํ–‰๋˜๊ณ , ์™„๋ฃŒ๋˜๋ฉด ๋˜๋‹ค๋ฅธ ๋กœ์ง์ด ์‹คํ–‰๋˜๋Š” ๋“ฑ์˜ ์ˆœ์„œ๊ฐ€ ์žˆ์Œ์„ ์•Œ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด์™€ ๋‹ฌ๋ฆฌ ReactiveX๋Š” "Observer"์— ์˜ํ•ด ์ž„์˜์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ๋‚˜์ค‘์— ๊ฒฐ๊ณผ๋‚˜ ๋‚˜์˜จ๋‹ค.

์ฆ‰ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, Observable์•ˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ , ๋ณ€ํ™˜ ํ•˜๋Š” ๋“ฑ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์˜ํ•œ ํ›„, Observable์ด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ์˜ต์ €๋ฒ„์˜ ๊ด€์ฐฐ์ž๊ฐ€ ๊ทธ ์ˆœ๊ฐ„์„ ๊ฐ์ง€ํ•˜๊ณ  ์ค€๋น„๋œ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ๊ทธ๋ž˜์„œ Observable์„ Subscribeํ•œ๋‹ค๋Š” ํ‘œํ˜„์„ ์“ด๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Observable์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์นœ๋‹ค.

  1. ๋น„๋™๊ธฐ ํ˜ธ์ถœ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ด๋ฐ›๊ณ , ํ•„์š”ํ•œ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•œ๋‹ค.
  2. Observable๋กœ ๋น„๋™๊ธฐ ํ˜ธ์ถœ์„ ์ •์˜ํ•œ๋‹ค.
  3. Subscribe๋ฅผ ํ†ตํ•ด ์˜ต์ €๋ฒ„๋ฅผ Observable์— ์—ฐ๊ฒฐ ์‹œํ‚จ๋‹ค.
  4. ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋ฆฌํ„ด ๋  ๋•Œ๋งˆ๋‹ค, ์˜ต์ €๋ฒ„์˜ ๋ฉ”์„œ๋”๋Š” ๋ฆฌํ„ด ๊ฐ’ ๋˜๋Š” ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•ด์„œ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค.

onNext Observable์€ ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ push ํ•  ๋•Œ ๋งˆ๋‹ค ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” Observable ์ด ๋ฐฐ์ถœํ•˜๋Š” ํ•ญ๋ชฉ์„ parameter ๋กœ ์ „๋‹ฌ ๋ฐ›๋Š”๋‹ค.

oNError ๊ธฐ๋Œ€ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ํ˜ธ์ถœ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ onNext, onCompleted๋Š” ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค.

onCompleted ๋งˆ์ง€๋ง‰ onNext๊ฐ€ ํ˜ธ์ถœ๋œ ๋’ค์— ํ˜ธ์ถœ๋œ๋‹ค.

๋” ์ด์ƒ ๊ตฌ๋…์„ ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด unSubscirbe๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

Observable์ด ์—ฐ์†๋œ ํ•ญ๋ชฉ์„ pushํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ๋ฐ”๋กœ hot๊ณผ cold๋‹ค. hot์€ ์ƒ์„ฑ๋˜์ž๋งˆ์ž pushํ•˜๊ณ , cold๋Š” ์˜ต์ €๋ฒ„๊ฐ€ ๊ตฌ๋…ํ• ๋•Œ๊นŒ์ง€ ๋ฐฐ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด๋Ÿฌํ•œ Observable์€ ์—ฐ์‚ฐ์ž์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฐ ์—ฐ์‚ฐ์ž๋“ค์€ ๋ฆฌํ„ด๋œ observable์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.