์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[ Rxswift ] Observable์„ ์•Œ์•„๋ณด์ž

๐ŸŽ iOS/RxSwift

by AHN.Jihyeon 2024. 10. 4. 01:19

๋ณธ๋ฌธ

์ด๋ฏธ์ง€ ํด๋ฆญ ์‹œ ๊ณต์‹ ๋ฌธ์„œ๋กœ ์ด๋™ - Observable

 

 

 

๐Ÿ”Ž  1 . Observable = Observable sequence = sequence


RsSwift์—์„œ ๋งํ•˜๋Š” Observable๊ณผ sequence๋Š” ์‹œ๊ฐ„์— ๋”ฐ๋ผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ๋งํ•œ๋‹ค. 

  • Observable
    : RxSwift์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋กœ, ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๊ฐ’์ด๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„(์ŠคํŠธ๋ฆผ)์„ ๋‚˜ํƒ€๋ƒ„. ์ด ์ŠคํŠธ๋ฆผ์„ ๊ตฌ๋…ํ•จ์œผ๋กœ์จ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋งˆ๋‹ค ํ•ด๋‹น ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.
  • Sequence
    : ์ผ๋ฐ˜์ ์œผ๋กœ Swift์—์„œ๋Š” ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•œ ๊ฐ’์˜ ์ง‘ํ•ฉ(์˜ˆ: ๋ฐฐ์—ด, ๋ฆฌ์ŠคํŠธ ๋“ฑ)์„ ์˜๋ฏธํ•จ. 
    RxSwift์—์„œ์˜ ์‹œํ€€์Šค๋Š” ๊ฐ’๋“ค์ด ์‹œ๊ฐ„์ด ํ๋ฆ„์— ๋”ฐ๋ผ ํ•˜๋‚˜์”ฉ ๋‚˜์˜ค๋Š” ๋น„๋™๊ธฐ์ ์ธ ์‹œํ€€์Šค๋ฅผ ์˜๋ฏธํ•จ. 
    ์ด ์ŠคํŠธ๋ฆผ์€ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐ’์„ ๋ฐฉ์ถœํ•˜์ง€๋งŒ, ๊ทธ ๊ฐ’๋“ค์€ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ „๋‹ฌ๋จ.

 

 

์˜ต์ €๋ฒ„๋Š” ์˜ต์ €๋ฒ„๋ธ”์„ ๊ตฌ๋…ํ•œ๋‹ค. 

์˜ต์ €๋ฒ„๋ธ”์ด ๋ฐฉ์ถœํ•˜๋Š” ํ•˜๋‚˜ ๋˜๋Š” ์—ฐ์†๋œ ํ•ญ๋ชฉ์— ์˜ต์ €๋ฒ„๋Š” ๋ฐ˜์‘ํ•œ๋‹ค. 

 

์˜ต์ €๋ฒ„๋ธ”์€ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰(์ „๋‹ฌ)ํ•˜๊ณ ,

์˜ต์ €๋ฒ„(๊ตฌ๋…์ž)๋Š” ์˜ต์ €๋ฒ„๋ธ”์„ ๊ฐ์‹œ(๊ตฌ๋…)ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ๊ทธ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•˜๋Š” ๊ตฌ์กฐ

 

์˜ต์ €๋ฒ„๋ธ”์€ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ๋งŒ ๋ฐฉ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,

์˜ต์ €๋ฒ„๋ธ”์—์„œ ๋ฐœ์ƒํ•œ ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ๋Š” next, error, completed ์„ธ๊ฐ€์ง€ ํƒ€์ž…์˜ ์ด๋ฒคํŠธ๋ฅผ ๋ฐฉ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ผ๋ฐ˜์ ์œผ๋กœ next๋กœ ์ „๋‹ฌ๋œ ์ด๋ฒคํŠธ๋Š” ๋ฐฉ์ถœ์ด๋ผ ํ‘œํ˜„ํ•˜๊ณ ,

error์™€ completed๋Š” notificaion์ด๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค. 

  • next: ์ตœ์‹ , ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ด๋ฒคํŠธ 
  • completed: ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฒคํŠธ ์ข…๋ฃŒํ•˜๋Š” ์ด๋ฒคํŠธ. ์˜ต์ €๋ฒ„๋ธ”์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ์ข…๋ฃŒ
  • error: ์˜ต์ €๋ฒ„๋ธ”์ด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ. ์ถ”๊ฐ€์ ์ธ ์ด๋ฒคํŠธ ์ƒ์„ฑ์€ ์—†์œผ๋ฉฐ ์—๋Ÿฌ์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ.

 

์ด๋Ÿฌํ•œ ํŒจํ„ด์€ ๋™์‹œ์„ฑ ์—ฐ์‚ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

 

 

์–ด๋–ป๊ฒŒ?

์˜ต์ €๋ฒ„๋ธ”์ด ๊ฐ์ฒด๋ฅผ ๋ฐฉ์ถœํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ํ•„์š” ์—†์ด ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๋ฐฐ์ถœ๋˜๋ฉด ๊ทธ ์‹œ์ ์„ ๊ฐ์‹œํ•˜๋Š” ๊ด€์ฐฐ์ž๋ฅผ ์˜ต์ €๋ฒ„ ์•ˆ์— ๋‘๊ณ  

์ด ๊ด€์ฐฐ์ž๋ฅผ ํ†ตํ•ด ๋ฐฉ์ถœ ์•Œ๋ฆผ์„ ๋ฐ›์œผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

์˜ต์ €๋ฒ„๋ธ” ์•ˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ, ๋ณ€ํ™˜ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์ •์˜ ํ•œ ํ›„ 

์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์˜ต์ €๋ฒ„์˜ ๊ด€์ฐฐ์ž๊ฐ€ ๊ทธ ์ˆœ๊ฐ„์„ ๊ฐ์ง€ํ•˜๊ณ  ์ค€๋น„๋œ ์—ฐ์‚ฐ์„ ์‹คํ–‰์‹œ์ผœ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. 

๋”ฐ๋ผ์„œ, ์˜ต์ €๋ฒ„๋ธ”์„ '๊ตฌ๋…'ํ•œ๋‹ค๋ผ๊ณ  ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ.

์˜ต์ €๋ฒ„๋ธ”์€ ํ•ญ๋ชฉ๋“ค์„ ๋ฐฐ์ถœํ•˜๊ฑฐ๋‚˜ ์˜ต์ €๋ฒ„๋ธ”์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์˜ต์ €๋ฒ„์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ธ๋‹ค. 

 

 

 

๐Ÿ”Ž  2. ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ํ๋ฆ„ 


์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ํด๋ž˜์Šค๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋ฉฐ, UI ๊ตฌ์„ฑ ์š”์†Œ๋“ค์€ ๋น„๋™๊ธฐ์ ์ด๋‹ค. 

๋”ฐ๋ผ์„œ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ค ์ˆœ์„œ๋กœ ์ž‘๋™๋˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์—†๋‹ค. 

 

ReactiveX๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„๋™๊ธฐ์™€ ๋ณ‘๋ ฌ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. 

๋ชจ๋“  ์ž‘์—…์ด ๋น„๋™๊ธฐ์™€ ๋ณ‘๋ ฌ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ๋ฉ”์ธ์Šค๋ ˆ๋“œ์—์„œ ๋™์ž‘ํ•˜๋Š” ์˜ต์ €๋ฒ„๋ธ”๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. 

์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋น„๋™๊ธฐ ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋ณ‘๋ ฌ ์‹คํ–‰์„ ์›ํ•˜๋ฉด ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์ด์šฉํ•ด์„œ ์ฒ˜๋ฆฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

 

 

1. ๋น„๋™๊ธฐ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ด ๋ฐ›๊ณ  ํ•„์š”ํ•œ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ •์˜ 

-> ๋น„๋™๊ธฐ ๋ฉ”์„œ๋“œ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์œผ๋ฉด ์–ด๋–ค ๋™์ž‘์„ ํ• ์ง€ ๋ฏธ๋ฆฌ ์ •์˜ํ•œ๋‹ค. ์ด ์ •์˜ ๋œ ๋™์ž‘์ด ์˜ต์ €๋ฒ„์˜ ์ผ๋ถ€๊ฐ€ ๋œ๋‹ค. 

์˜ˆ) ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ 

 

2. ์˜ต์ €๋ฒ„๋ธ”๋กœ ๋น„๋™๊ธฐ ํ˜ธ์ถœ์„ ์ •์˜

์˜ต์ €๋ฒ„๋ธ”์€ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜์ค‘์— ๋ณด๋‚ด๋Š” ์—ญํ• 

-> ๋น„๋™๊ธฐ ์ž‘์—…์ด ์‹คํ–‰๋˜๋„๋ก ์˜ต์ €๋ฒ„๋ธ” ์„ค์ •. 

๋„คํŠธ์›Œํฌ ์š”์ฒญ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ๋ฅผ ์˜ต์ €๋ฒ„๋ธ”๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ

 

3. ๊ตฌ๋…์„ ํ†ตํ•ด ์˜ต์ €๋ฒ„๋ฅผ ์˜ต์ €๋ฒ„๋ธ” ๊ฐ์ฒด์— ์—ฐ๊ฒฐ 

๋น„๋™๊ธฐ ์ž‘์—…์ด ๋๋‚ฌ์„ ๋•Œ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ์ค€๋น„๊ฐ€ ๋œ ์˜ต์ €๋ฒ„์™€ ์˜ต์ €๋ฒ„๋ธ”์„ ์—ฐ๊ฒฐ

์ด๋•Œ ๊ตฌ๋…์„ ํ•˜๋ฉด ์˜ต์ €๋ฒ„๋ธ”์˜ ๋™์ž‘์ด ์‹คํ–‰๋œ๋‹ค.

'๊ตฌ๋…'์ด ์‹ค์ œ๋กœ ์˜ต์ €๋ฒ„๋ธ”์ด ๋™์ž‘์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํŠธ๋ฆฌ๊ฑฐ๋‹ค. 

์˜ต์ €๋ฒ„๋ธ”์€ ๊ตฌ๋…ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์•„๋ฌด๋Ÿฐ ๋™์ž‘๋„ ํ•˜์ง€ ์•Š๊ณ  ๊ตฌ๋…์ด ์ด๋ฃจ์–ด์ ธ์•ผ ์˜ต์ €๋ฒ„๋ฒ„๋ธ”์ด ํ•ญ๋ชฉ์„ ๋ฐฉ์ถœํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. 

 

 

4. ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋ฆฌํ„ด๋  ๋•Œ๋งˆ๋‹ค ์˜ต์ €๋ฒ„์˜ ๋ฉ”์„œ๋“œ(๋ฆฌํ„ด๊ฐ’ ๋˜๋Š” ์˜ต์ €๋ฒ„๋ธ”์ด ๋ฐฉ์ถœํ•˜๋Š” ํ•ญ๋ชฉ๋“ค์„ ์‚ฌ์šฉํ•ด์„œ ์—ฐ์‚ฐ ์‹œ์ž‘) ์‹คํ–‰

๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ->  ์˜ต์ €๋ฒ„๋ธ”์ด ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ต์ €๋ฒ„์—๊ฒŒ ์ „๋‹ฌ -> ์˜ต์ €๋ฒ„์—์„œ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋™์ž‘(์˜ˆ: ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œ)์„ ํ†ตํ•ด ์ฒ˜๋ฆฌ ๋จ 

 

 

์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์ž๋ฉด, 

1) ์˜ต์ €๋ฒ„๋ธ” : ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์„ ์ •์˜ ํ•˜๋Š” ์—ญํ• . ์ด ์ŠคํŠธ๋ฆผ ์•ˆ์— ๋น„๋™๊ธฐ ์ž‘์—…์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ. 

2) ์˜ต์ €๋ฒ„ : ๋น„๋™๊ธฐ ์ž‘์—…์œผ๋กœ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋กœ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ์ •์˜ 

3) subscribe(๊ตฌ๋…): ๊ตฌ๋…์ด ์‹œ์ž‘๋˜๋ฉด ๋น„๋™๊ธฐ ์ž‘์—…์ด ์‹คํ–‰๋จ. ๊ตฌ๋…์„ ํ•˜๋ฉด ์‹ค์ œ๋กœ ์„œ๋ฒ„ ์š”์ฒญ์ด ์‹คํ–‰๋˜๊ณ  ๊ฒฐ๊ณผ๊ฐ€ ์˜ค๋ฉด ์˜ต์ €๋ฒ„๊ฐ€ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌ(์˜ˆ: ํ™”๋ฉด์— ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œ).  

์ด ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ๋„ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

๐Ÿ”Ž  3. Hot ์˜ต์ €๋ฒ„๋ธ”, Cold ์˜ต์ €๋ฒ„๋ธ”


๋ฐ์ดํ„ฐ์˜ ๋ฐฉ์ถœ ์‹œ์ ๊ณผ ์˜ต์ €๋ฒ„์˜ ๊ตฌ๋… ์‹œ์  ์‚ฌ์ด์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ดํ•ด

 

 

Hot ์˜ต์ €๋ฒ„๋ธ”

์—ฐ์†๋œ ํ•ญ๋ชฉ๋“ค์ด ์ƒ์„ฑ๋˜์ž๋งˆ์ž ํ•ญ๋ชฉ์„ ๋ฐฐ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜ต์ €๋ฒ„๋ธ”์„ ๊ตฌ๋…ํ•˜๋Š” ์˜ต์ €๋ฒ„๋ธ”๋“ค์€ ํ•ญ๋ชฉ๋“ค์ด ๋ฐฐ์ถœ๋˜๋Š” ์ค‘๊ฐ„๋ถ€ํ„ฐ ์˜ต์ €๋ฒ„๋ธ”์„ ๊ตฌ๋…ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

์˜ˆ) ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ(์ฃผ์‹ ์‹œ์„ธ ๋“ฑ)

์ฃผ์‹ ์‹œ์„ธ๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€๋™ํ•˜๊ณ  ์žˆ๊ณ  ๋Šฆ๊ฒŒ ๊ตฌ๋…ํ•œ ์‹œ์ ์€ ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค. 

 

 

Cold ์˜ต์ €๋ฒ„๋ธ” 

์˜ต์ €๋ฒ„๊ฐ€ ๊ตฌ๋…ํ•  ๋•Œ๊นŒ์ง€ ํ•ญ๋ชฉ์„ ๋ฐฐ์ถœํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜ต์ €๋ฒ„๋ธ”์„ ๊ตฌ๋…ํ•˜๋Š” ์˜ต์ €๋ฒ„๋Š” ํ•ญ๋ชฉ ์ „์ฒด๋ฅผ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์˜ˆ)  API ํ˜ธ์ถœ, ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ -> API์—์„œ ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. 

 

 

Connectable ์˜ต์ €๋ฒ„๋ธ”

์˜ต์ €๋ฒ„์˜ ๊ตฌ๋… ์—ฌ๋ถ€์™€ ์ƒ๊ด€ ์—†์ด ์ž์‹ ์˜ connect ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „๊นŒ์ง€ ํ•ญ๋ชฉ๋“ค์„ ๋ฐฐ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค.

Hot ์˜ต์ €๋ฒ„๋ธ”์ด์ง€๋งŒ connect ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „๊นŒ์ง€ ๋ฐ์ดํ„ฐ ๋ฐฉ์ถœ ํ•˜์ง€ ์•Š์Œ.

์˜ˆ) ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์‹œ์— ๊ตฌ๋…ํ•ด์•ผํ•  ๋•Œ, connect๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ชจ๋‘์—๊ฒŒ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. 

 

 

 

 

๐Ÿ”Ž  4. ์—ฐ์‚ฐ์ž ์ฒด์ธ


"๋ฆฌ์•กํ‹ฐ๋ธŒ ํ™•์žฅ(reactive extensions)"(๊ทธ๋ž˜์„œ "ReactiveX"๋กœ ๋ถ€๋ฅด๋Š”)์˜ ์ง„์งœ ํž˜์€ ์—ฐ์‚ฐ์ž๋กœ๋ถ€ํ„ฐ ๋‚˜์˜จ๋‹ค.
์—ฐ์‚ฐ์ž๋“ค์€ Observable์ด ๋ฐฐ์ถœํ•˜๋Š” ์—ฐ์†๋œ ํ•ญ๋ชฉ๋“ค์„ ๋ณ€ํ™˜์‹œํ‚ค๊ณ , ๊ฒฐํ•ฉํ•˜๊ณ , ์กฐ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

 

์—ฐ์‚ฐ์ž๋“ค์„ ํ•˜๋‚˜์˜ Observable์— ์ ์šฉํ•˜๊ณ  ๋˜ ๋‹ค์Œ ์—ฐ์‚ฐ์ž์— ๋‹ค์‹œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์ž ์ฒด์ธ์„ ์ œ๊ณตํ•œ๋‹ค.

์—ฐ์‚ฐ์ž ์ฒด์ธ์— ๊ฑธ๋ ค์žˆ๋Š” ๊ฐ๊ฐ์˜ ์—ฐ์‚ฐ์ž๋“ค์€ ์ด์ „ ์—ฐ์‚ฐ์ž๊ฐ€ ๋ฆฌํ„ดํ•œ Observable์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

 

๋นŒํ„ฐํŒจํ„ด๊ณผ ๋น„์Šทํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฉ”์„œ๋“œ ์ฒด์ธ์„ ์ œ๊ณตํ•œ๋‹ค. 

ํ•˜์ง€๋งŒ ๋นŒ๋” ํŒจํ„ด์€ ์—ฐ์‚ฐ์ž์˜ ํ˜ธ์ถœ ์ˆœ์„œ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. 

 

Observable ์—ฐ์‚ฐ์ž ์ฒด์ธ์€ ์›๋ณธ Observable๊ณผ๋Š” ๋–จ์–ด์ ธ์„œ ๋™์ž‘ํ•  ์ˆ˜ ์—†๊ณ  ์ˆœ์„œ๋Œ€๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—,

ํ˜ธ์ถœ ์ฒด์ธ ์ค‘ ๋ฐ”๋กœ ์ด์ „์— ํ˜ธ์ถœ๋œ ์—ฐ์‚ฐ์ž๊ฐ€ ๋ฆฌํ„ดํ•œ Observable์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

 

 

 

 

 

Reference
https://github.com/fimuxd/RxSwift/blob/master/Lectures/01_HelloRxSwift/Ch.1%20Hello%20RxSwift.md

'๐ŸŽ iOS > RxSwift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ RxSwift ] Relay๋ฅผ ์•Œ์•„๋ณด์ž  (2) 2024.10.15
[ RxSwift ] Subject๋ฅผ ์•Œ์•„๋ณด์ž  (2) 2024.10.11

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ