RxSwift์ ๋ํด ๊ณต๋ถํ๋ ค๊ณ ๋ณด๋ ์จ์ด ํฑํฑ ๋งํ๋ ๊ฑฐ ๊ฐ์์
๊ฐ๋ ์ ํ์ด ๋ณด๋๊ฑฐ ๋ง๊ณ ๋ด ๋๋ฆ๋๋ก ์ ๋ฆฌํด์ผ๊ฒ ๋ค๋ ํ์์ฑ์ ๋๊ผ๋ค ..!
๊ทธ๋์ ์ค๋๋ถํฐ TIL ์์ผ๋ก ํ๋ ํ๋์ฉ ๋ฝ๊ฐ๋ณด๋ ค๊ณ ํ๋ค ์ฐจ์ฐจ ๊ตต์ ๋ผ๋๋ถํฐ ์ก๊ณ ์ธ์ธํ๊ฒ ๋ง์คํฐ ํ๋ ๊ฒ์ด ๋ชฉํ๋ค
RxSwift(์์ค)์ผ ์นํด์ง์์ ๐ฐ๐ต๐ฆ
๊ทธ๋์ ์ค๋์ ์ฒซ๋ฒ์งธ๋ก ๊ฐ์ฅ ์ค์ํ ๊ฐ๋ Observable์ ๋ํด ์ดํด๋ณผ๊ฒ์ด๋ค
์กฐ๊ธ์ฉ ๋ ์๊ฒ ๋๋ฉด์ ์ถ๊ฐํ ์์ ์ด๋ค
์ฐธ๊ณ ํ ๊ธ์ ๊ณต์ docs๋ฅผ ์ฐธ๊ณ ํ์๋ค
http://reactivex.io/documentation/observable.html
ReactiveX - Observable
Observable In ReactiveX an observer subscribes to an Observable. Then that observer reacts to whatever item or sequence of items the Observable emits. This pattern facilitates concurrent operations because it does not need to block while waiting for the Ob
reactivex.io
"๊ด์ฐฐ ๊ฐ๋ฅํ"
์ด๊ฒ์ด ๊ณง observable์ ํด์ํ ๊ทธ๋๋ก๋ค
rxSwift์ ํ ๋์ ๋ํด ์กฐ๊ธ ์ดํด๋ณด์๋ฉด ์ธ์์ ๊ด์ฐฐ๊ณผ ๊ด์ฐฐ๋๋ ๋์์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๊ฐ ์ฑ์์ ์ด๋ฒคํธ๋ค์ ์ดํด๋ณผ๋
์ฐ๋ฆฌ๋ ์๋์ ๋ฑ๋ก(๊ตฌ๋ )ํ๊ณ ๋ฑ๋ก๋ ์๋์ ์๋ ์ ํธ๋ฅผ ๋ฐฉ์ถํ๋ ๊ด๊ณ๋ฅผ ํ์ฑํ๋ค. ์ด์ฒ๋ผ ๊ตฌ๋ ํ๋ ๋์์ Observer, ๊ตฌ๋ ๋ฐ๋ ์ฆ, ์ด๋ฒคํธ๋ฅผ ๋ฐฉ์ถํ๋ ๋์๋ฅผ Observable์ด๋ผ๊ณ ํ๋ค.
Observable๋ค์ ์ผ๋ จ์ sequence๋ฅผ ๊ฐ์ง๊ณ ์๊ณ
์๋ฐ ์์ผ๋ก flip์ด๋ผ๋ ๋ณํ์ ๊ฑฐ์ณ ๋น๋๊ธฐ์ ์ผ๋ก ์์ดํ ์ ๋ฐฉ์ถํ๋ค.
Observable์ ํ๋ ๊ท์น
Observable๋ 3๊ฐ์ง ํ๋ ๊ท์น์ ๊ฐ์ง๋ค โก๏ธ <next, error, complete>
1) onNext
Observable์ด item์ ๋ฐฉ์ถํ ๋ ์ด๊ณณ์์ ํธ์ถํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Observable๋ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด์ด์ง ๋ฐฉ์ถํ๊ธฐ ์ํด์ subScribe๋์ด์ผ ํ๋๋ฐ ์๋ ์ฝ๋์ ๊ฐ์ด ์ฌ์ฉํ๋ค.
์ด๊ณณ onNext์์ ๋ฐฉ์ถ๋๋ ๊ฐ์ model์ ๋์ ํ๊ฑฐ๋ print ํ๋ ๋ฑ ์ฒ๋ฆฌํ๋ ๊ณณ์ด๋ค.
2) onError
Observable์ด ์์์น ๋ชปํ ์๋ฌ๋ฅผ ๋ง์ฃผํ์๋ ์ฒ๋ฆฌ๋๋ ๊ณณ์ด๋ค. error handling ๊ฐ์๊ฑด๊ฐ ?
3) onCompleted
Observable์ด ํ ์ผ์ ๋ค ๋๋ด๊ณ (onNext์์์ ์์ ์ ๋ค ์ํํ๊ณ ) ์ค๋ ๊ณณ์ด๋ค.
4) onDisposeBag
Observable์ด ํ ์ผ์ ๋ค ํ์๋ ๊ฐ์ฒด ๊ฐ์ ๋ฒ๋ ค์ฃผ๋ ๊ณณ์ด๋ค. ๋ ์ฌ์ฉํ ์ผ์ด ์์ผ๋ฏ๋ก DisposeBag() ์ ๋ด์ ์ฒ๋ฆฌํ๋ค.
Observable์ ์์ฑ
1) Observable.just()
-> ์ ์คํธ ํ๊ฐ์ ์์ดํ
2) Observable.of()
-> ์์ดํ ์ ํ์ ์ ์ถ๋ก ํ์ฌ "Sequence"๋ฅผ ์์ฑํ๋ค.
3) Observable.from()
-> Array ํ์ ๋ง ๋ฐ๋๋ค
4) Observable.create()
-> Disposable์ ๋ฆฌํดํ๋ฉฐ ๋ค์ํ ๊ฐ (onNext, onCompleted, ...) ์ ์ฒ๋ฆฌํ ์ ์๋ค.
'IOS๐ > RxSwift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[RxSwift] Driver๋ ? (feat. bind) (0) | 2022.03.21 |
---|---|
[RxSwift] Traits ์ด๋ (0) | 2022.03.19 |
[RxSwift] Disposable DisposeBag ์ด๋ (0) | 2022.03.17 |
[RxSwift] Combine Operator(CombineLatest, Merge, StartWith, Concat, Zip, WithLastFrom, Sample, SwitchLatest, Debounce) (0) | 2022.03.06 |
[RxSwift] 2. Subject์ Relay (0) | 2021.11.20 |
๋๊ธ