Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
RxSwift Scheduler
USAMI Kosuke
August 20, 2018
Programming
2
450
RxSwift Scheduler
https://mobileact.connpass.com/event/93121/
USAMI Kosuke
August 20, 2018
Tweet
Share
More Decks by USAMI Kosuke
See All by USAMI Kosuke
usamik26
0
770
usamik26
0
210
usamik26
1
930
usamik26
0
170
usamik26
0
170
usamik26
0
390
usamik26
0
33
usamik26
1
400
usamik26
0
400
Other Decks in Programming
See All in Programming
mizdra
7
4.8k
shigeruoda
0
460
muttsu_623
0
450
kenmaz
1
100
malvinstn
1
610
freekmurze
0
190
chichou
1
790
nauleyco
0
200
jun0
3
630
horie1024
1
330
attsumi
1
350
yshrsmz
1
450
Featured
See All Featured
lauravandoore
437
28k
tammielis
237
23k
notwaldorf
13
1.5k
holman
448
130k
keithpitt
401
20k
jonrohan
1021
380k
tanoku
258
24k
morganepeng
92
13k
matthewcrist
73
7.5k
edds
56
9.3k
mojombo
358
62k
paulrobertlloyd
71
1.4k
Transcript
RxSwiftͷεέδϡʔϥ USAMI Kosuke Fenrir Inc.
RxSwift • ඇಉظΠϕϯτΛड͚औΔͨΊͷΈ • UI Πϕϯτड͚औΓ • Web API Ϩεϙϯεड͚औΓ
• σʔλͷมԽͷࢹ
ྫ hogeObservable .subscribe(onNext: { _ in // ΠϕϯτΛड͚औͬͨͱ͖ͷॲཧ })
ඇಉظΠϕϯτͱεϨου • ඇಉظΠϕϯτʹಉظతͰͳ͍ʹผεϨουͰൃੜ͢Δ • Rx ͰεϨουͲͷΑ͏ʹѻΘΕΔͷ͔ʁ
εέδϡʔϥ • Rx ͰεϨουʹͨΔ֓೦ • ʢਖ਼֬ʹεϨουͱ1ର1Ͱͳ͍͚Ͳɺ͜͜Ͱলུʣ
༨ஊɿRx ͷࡾཁૉ • Observable • Operator • Scheduler
εέδϡʔϥ
Observable ͱ Observer • ΠϕϯτൃੜݩͱΠϕϯτॲཧ
Scheduler • ͦΕͧΕʹεέδϡʔϥΛࢦఆͰ͖Δ
observeOn • ΠϕϯτॲཧͷεέδϡʔϥΛม͑Δ
ྫ hogeObservable .observeOn(MainScheduler.instance) .subscribe(onNext: { _ in // ϝΠϯεϨουͰಈ࡞͢Δ })
subscribeOn • ΠϕϯτൃੜݩͷεέδϡʔϥΛม͑Δ
ྫ hogeObservable .subscribeOn(hogeScheduler) .do(onNext: { _ in // hogeScheduler Ͱಈ࡞͢Δ
} .observeOn(MainScheduler.instance) .subscribe(onNext: { _ in // ϝΠϯεϨουͰಈ࡞͢Δ })
εϨου੍ޚ·ͱΊ • subscribeOn : Πϕϯτൃੜݩͷεέδϡʔϥࢦఆ • Web API ࣮ߦεϨουͷࢦఆ •
σʔλϕʔεΞΫηεεϨουͷࢦఆ • observeOn : Πϕϯτॲཧͷεέδϡʔϥͷࢦఆ • UI ॲཧεϨουͷࢦఆ
ҙ • subscribeOn ͰΓସ͑Ͱ͖ͳ͍߹͕͋Δ • ͦΕ Observable ͷੑ࣭ʹΑΔ
Hot ͱ Cold
subscribeOn ͕ޮ͔ͳ͍߹ • Hot ͳ Observable ͷ߹Γସ͑Ͱ͖ͳ͍ • Cold ͳ
Observable ͷ߹Γସ͑Ͱ͖Δ
ྫɿΓସ͑Ͱ͖ͳ͍έʔε let hogeRelay = BehaviorRelay(value: "A") let hogeThread = Thread()
{ sleep(1) hogeRelay.accept("B") sleep(1) hogeRelay.accept("C") } hogeThread.start()
ྫɿΓସ͑Ͱ͖ͳ͍έʔε hogeRelay .subscribeOn(MainScheduler.instance) .do(onNext: { _ in // hogeThread Ͱ
accept ͨ͠ͷ hogeThread Ͱಈ࡞ } .observeOn(MainScheduler.instance) .subscribe(onNext: { _ in // ϝΠϯεϨουͰಈ࡞͢Δ })
Observable ͷྨ : Hot / Cold • Hot • subscribe
͠ͳͯ͘ετϦʔϜ͕ྲྀΕΔ • subscribeOn Ͱ੍ޚͰ͖ͳ͍ • Cold • subscribe ͨ͠ΒετϦʔϜ͕ྲྀΕग़͢ • subscribeOn Ͱ੍ޚͰ͖Δ
ͲΕ͕ Hot ͰͲΕ͕ Cold ͔ʁ • Hot • Subject
Relay • Rx ͷ֎ଆ͔ΒετϦʔϜʹΠϕϯτΛૹΕΔ • Cold • ্هҎ֎͍͍ͩͨ Cold • Rx ͷ੍ޚԼʹ͋Δ
·ͱΊ
·ͱΊ • εέδϡʔϥ • Γସ͑Δํ๏ • Hot ͱ Cold •
Hot Γସ͑Ͱ͖ͳ͍