just, of, from
โก๏ธ just
, of
, from
โ ๊ฐ์ฅ ๋น ๋ฅธ ์ํ์ค ํฉํ ๋ฆฌ 3์ด์ฌ
just
, of
, from
โ ๊ฐ์ฅ ๋น ๋ฅธ ์ํ์ค ํฉํ ๋ฆฌ 3์ด์ฌโHello, World!โ๋ 1์ค์ด๋ฉด ์คํธ๋ฆผ์ด๋ค.โ
์ด ๋ฌธ์์์๋ RxSwift์์ ๊ฐ์ฅ ์์ฃผ ์ฐ์ด๋ ์ธ ๊ฐ์ง ๋๊ธฐ(Synchronous) ์ํ์ค ์์ฑ ๋ฉ์๋๋ฅผ ์ ๋ฆฌํฉ๋๋ค.
1๏ธโฃ Observable.just(_:)
โ ๋จ์ผ ์์
Observable.just(_:)
โ ๋จ์ผ ์์Observable.just("๐")
.subscribe(onNext: { print($0) },
onCompleted: { print("done") })
ํน์ง
ํ๋์ ๊ฐ
onNext
โ ์ฆ์onCompleted
โ DisposeCold: ๋งค ๊ตฌ๋ ๋ง๋ค ๊ฐ์ ๊ฐ ์ฌ์์ฐ
๋ฉ๋ชจ๋ฆฌยท์ค์ผ์ค๋ฌ ๋ถ๋ด ๊ฑฐ์ 0
์ ๋ ํ ์คํธ, ์์ ๋ชจ๋ธ, ๋ํดํธ ์๋ต Mock ๋ฑ์ ์ ์ฉ
2๏ธโฃ Observable.of(_:)
โ ๊ฐ๋ณ ์ธ์ ๋ฆฌ์คํธ
Observable.of(_:)
โ ๊ฐ๋ณ ์ธ์ ๋ฆฌ์คํธObservable.of(1, 2, 3)
.toArray()
.subscribe(onSuccess: { print($0) }) // [1,2,3]
ํน์ง
์ ๋ฌ๋ฐ์ ์ธ์ ์์๋๋ก
onNext
์์๊ฐ N๊ฐ์ธ
just
ํ์ฅํ๋ฐฐ์ด ์ ๋ฌ ์ ์ค๋ฒ๋ก๋ ๋ฐฉ์ง:
Observable.of([1,2,3])
โ ์์ 1๊ฐ(๋ฐฐ์ด) ๋ฐฉ์ถ
just([1,2,3])
vsof(1,2,3)
ํผ๋ ์ฃผ์
3๏ธโฃ Observable.from(_:)
โ Sequence โ Observable
Observable.from(_:)
โ Sequence โ Observablelet names = ["A", "B", "C"]
Observable.from(names)
.subscribe(onNext: { print($0) })
ํน์ง
Sequence
ํ๋กํ ์ฝ ์ฑํ ํ์ (Array, Set, Dictionary.keys...) ์ ํfor-in ๋ฐ๋ณต๊ณผ ๊ฐ์ ๋๊ธฐ ํ๋ฆ โ ๊น๋ํ Operator ์ฒด์ธ ๊ฒฐํฉ ๊ฐ๋ฅ
URL(string: "...")
.map(fetchHTML) // RxSwiftExt optional๋ก ๋ณํ
4๏ธโฃ ์ฑ๋ฅ & ์ค์ผ์ค๋ฌ
๋ชจ๋ **ํ์ฌ ์ค๋ ๋(CurrentThreadScheduler)**์์ ์ฆ์ ์คํ.
๊ฐ ๊ฐ์๊ฐ ๋ง์๋ stack-safe (๋ด๋ถ
generate
์ฌ์ฉ).ํ์ํ ๊ฒฝ์ฐ
.observe(on: Main)
๋ฑ์ผ๋ก ์ค๋ ๋ ์ ํ.
5๏ธโฃ ์ค์ ํ์ฉ ์ค๋ํซ
A. ๋ํดํธ Section ๋ชจ๋ธ ๋ฐํ
let emptySections = Observable.just([SectionModel(model: "", items: [])])
B. Enum Case ์คํธ๋ฆผ
enum Page { case home, settings, about }
Observable.of(Page.home, .settings, .about)
C. JSON ํ์ผ โ ๋ฐฐ์ด โ Observable
let items: [Todo] = load("todo.json")
Observable.from(items)
.bind(to: tableView.rx.items(...))
6๏ธโฃ Mini Quiz
Observable.just([1,2,3]).subscribe(...)
๋ ๋ช ๋ฒonNext
๋ฅผ ํธ์ถํ ๊น?from(Set(["A","B"]))
๋ฅผ ๊ตฌ๋ ํ๋ฉด ์์ ์์๋ ๋ณด์ฅ๋ ๊น?of()
๊ณผfrom([])
๋ ๋ค ๋น Observable์ ์์ฑํ ์ ์์๊น?
๋ค์ โถ๏ธ deferred, timer, interval ๋ก ๋์ด๊ฐ ์ง์ฐยท์ฃผ๊ธฐ ์ํ์ค๋ฅผ ๋ฐฐ์๋ด ์๋ค. ๐
Last updated