ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ณธ ํฌ์ŠคํŒ…์€ ๊ณฐํŠ€๊น€๋‹˜์˜ ๊ฐ•์˜์˜์ƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ, ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๋”์šฑ ์ž์„ธํ•œ ๋‚ด์šฉ์€, ๊ฐ•์˜ ์˜์ƒ์„ ์ง์ ‘ ์‹œ์ฒญํ•˜์‹œ๋Š”๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! 

 

 

 


Subject ๋ž€?

 

์ด์ „ ํฌ์ŠคํŒ… ๋ง๋ฏธ์—, Subeject๋ผ๋Š” ๊ฒƒ์„ ์ž ๊น ์†Œ๊ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ดํ›„ ํ”„๋กœ์ ํŠธ์—์„œ๋„ Subject๋ฅผ ๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ์ด ๋งŽ์ด ๋‚˜์™€์„œ, ์ด Subject์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

Subject๋ฅผ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜๋ฉด, Observable์˜ ํ๋ฆ„์„ ๋ฒ—์–ด๋‚œ ์™ธ๋ถ€์—์„œ๋„, ๋ฐ์ดํ„ฐ๋ฅผ ์ปจํŠธ๋กค ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ง‘์–ด๋„ฃ์–ด์ฃผ๋Š” ๋…€์„์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ, Observable๋Œ€์‹  PublishSubject๋กœ ์„ ์–ธ์„ ํ•ด์ฃผ๋ฉด, Subject์˜ stream์™ธ๋ถ€์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

ReactiveX ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด๋ฉด Subject์˜ ์ข…๋ฅ˜์—๋Š” 4๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

1) AsyncSubject

2) BehaviorSubject

3) PublishSubject

4) ReplaySubject

 

 ๊ฐ Subject๋“ค์— ๋Œ€ํ•ด, ๊ณต์‹๋ฌธ์„œ์— ์žˆ๋Š” ๋งˆ๋ธ”๊ทธ๋ฆผ์„ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

1. PublishSubject

PublishSubject์˜ ๋งˆ๋ธ”๊ทธ๋ฆผ

๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” Subject์ธ ๋งŒํผ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ ๋…€์„์ธ๋ฐ,

์™ธ๋ถ€์—์„œ ์ด PublishSubject๋ฅผ .subscribe()ํ•œ๋‹ค๋ฉด ํ•ด๋‹น ์‹œ์ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด๋‚ด์ฃผ๋Š” ๋…€์„์ž…๋‹ˆ๋‹ค.

 

 

 

2. BehaviorSubject

BehaviorSubject์˜ ๋งˆ๋ธ”๊ทธ๋ฆผ

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์ดˆ๊ธฐ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€ ์™ธ๋ถ€์—์„œ BehaviorSubject๋ฅผ .subscribe()ํ•˜๋Š” ์ˆœ๊ฐ„

์ดˆ๊ธฐ๊ฐ’๊ณผ ํ•จ๊ป˜ subscribe์‹œ์  ์ดํ›„์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์ „๋‹ฌํ•ด์ค๋‹ˆ๋‹ค.

 

๋˜ํ•œ, ์ค‘๊ฐ„์— subscribeํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น์‹œ์  ๊ธฐ์ค€, ๊ฐ€์žฅ ์ตœ์‹  data๋ฅผ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ํ•˜์—ฌ ๊ฐ’์„ ์ „๋‹ฌํ•ด์ค๋‹ˆ๋‹ค.

 

 

 

3. AsyncSubject

AsyncSubject์˜ ๋งˆ๋ธ”๊ทธ๋ฆผ

AsyncSubject๋Š”, ๊ทธ๋ฆผ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์™ธ๋ถ€์—์„œ .subscribe()๋ฅผ ํ•˜๋”๋ผ๋„ ๊ฐ’์„ ๋ณด๋‚ด์ฃผ์ง€ ์•Š๋‹ค๊ฐ€,

Completed๋˜๋Š” ์ˆœ๊ฐ„์— ๊ฐ€์žฅ ์ตœ๊ทผ๊ฐ’์„ .subscribe()ํ•œ ๋ชจ๋“  stream์— ๋ฟŒ๋ ค์ค€๋‹ค.

 

 

 

4. ReplaySubject

ReplaySubject์˜ ๋งˆ๋ธ”๊ทธ๋ฆผ

ReplaySubject๋Š” ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„์ฑ„๋กœ ์ดˆ๊ธฐํ™”๊ฐ€ ๋œ๋‹ค.

๋˜ํ•œ, .subscribe()๊ฐ€ ๋  ๋•Œ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋งŒํผ ๊ฐ’์„ ๊ฐ€์ง„ ์ฑ„, ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋ฐ›์•„์˜จ๋‹ค.

 

 

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๋ฐ˜์‘ํ˜•
๋งํฌ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
Total
Today
Yesterday