RxSwift Scheduler
by
USAMI Kosuke
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
RxSwiftͷεέδϡʔϥ USAMI Kosuke Fenrir Inc.
Slide 2
Slide 2 text
RxSwift • ඇಉظΠϕϯτΛड͚औΔͨΊͷΈ • UI Πϕϯτड͚औΓ • Web API Ϩεϙϯεड͚औΓ • σʔλͷมԽͷࢹ
Slide 3
Slide 3 text
ྫ hogeObservable .subscribe(onNext: { _ in // ΠϕϯτΛड͚औͬͨͱ͖ͷॲཧ })
Slide 4
Slide 4 text
ඇಉظΠϕϯτͱεϨου • ඇಉظΠϕϯτʹಉظతͰͳ͍ʹผεϨουͰൃੜ͢Δ • Rx ͰεϨουͲͷΑ͏ʹѻΘΕΔͷ͔ʁ
Slide 5
Slide 5 text
εέδϡʔϥ • Rx ͰεϨουʹͨΔ֓೦ • ʢਖ਼֬ʹεϨουͱ1ର1Ͱͳ͍͚Ͳɺ͜͜Ͱলུʣ
Slide 6
Slide 6 text
༨ஊɿRx ͷࡾཁૉ • Observable • Operator • Scheduler
Slide 7
Slide 7 text
εέδϡʔϥ
Slide 8
Slide 8 text
Observable ͱ Observer • ΠϕϯτൃੜݩͱΠϕϯτॲཧ
Slide 9
Slide 9 text
Scheduler • ͦΕͧΕʹεέδϡʔϥΛࢦఆͰ͖Δ
Slide 10
Slide 10 text
observeOn • ΠϕϯτॲཧͷεέδϡʔϥΛม͑Δ
Slide 11
Slide 11 text
ྫ hogeObservable .observeOn(MainScheduler.instance) .subscribe(onNext: { _ in // ϝΠϯεϨουͰಈ࡞͢Δ })
Slide 12
Slide 12 text
subscribeOn • ΠϕϯτൃੜݩͷεέδϡʔϥΛม͑Δ
Slide 13
Slide 13 text
ྫ hogeObservable .subscribeOn(hogeScheduler) .do(onNext: { _ in // hogeScheduler Ͱಈ࡞͢Δ } .observeOn(MainScheduler.instance) .subscribe(onNext: { _ in // ϝΠϯεϨουͰಈ࡞͢Δ })
Slide 14
Slide 14 text
εϨου੍ޚ·ͱΊ • subscribeOn : Πϕϯτൃੜݩͷεέδϡʔϥࢦఆ • Web API ࣮ߦεϨουͷࢦఆ • σʔλϕʔεΞΫηεεϨουͷࢦఆ • observeOn : Πϕϯτॲཧͷεέδϡʔϥͷࢦఆ • UI ॲཧεϨουͷࢦఆ
Slide 15
Slide 15 text
ҙ • subscribeOn ͰΓସ͑Ͱ͖ͳ͍߹͕͋Δ • ͦΕ Observable ͷੑ࣭ʹΑΔ
Slide 16
Slide 16 text
Hot ͱ Cold
Slide 17
Slide 17 text
subscribeOn ͕ޮ͔ͳ͍߹ • Hot ͳ Observable ͷ߹Γସ͑Ͱ͖ͳ͍ • Cold ͳ Observable ͷ߹Γସ͑Ͱ͖Δ
Slide 18
Slide 18 text
ྫɿΓସ͑Ͱ͖ͳ͍έʔε let hogeRelay = BehaviorRelay(value: "A") let hogeThread = Thread() { sleep(1) hogeRelay.accept("B") sleep(1) hogeRelay.accept("C") } hogeThread.start()
Slide 19
Slide 19 text
ྫɿΓସ͑Ͱ͖ͳ͍έʔε hogeRelay .subscribeOn(MainScheduler.instance) .do(onNext: { _ in // hogeThread Ͱ accept ͨ͠ͷ hogeThread Ͱಈ࡞ } .observeOn(MainScheduler.instance) .subscribe(onNext: { _ in // ϝΠϯεϨουͰಈ࡞͢Δ })
Slide 20
Slide 20 text
Observable ͷྨ : Hot / Cold • Hot • subscribe ͠ͳͯ͘ετϦʔϜ͕ྲྀΕΔ • subscribeOn Ͱ੍ޚͰ͖ͳ͍ • Cold • subscribe ͨ͠ΒετϦʔϜ͕ྲྀΕग़͢ • subscribeOn Ͱ੍ޚͰ͖Δ
Slide 21
Slide 21 text
ͲΕ͕ Hot ͰͲΕ͕ Cold ͔ʁ • Hot • Subject Relay • Rx ͷ֎ଆ͔ΒετϦʔϜʹΠϕϯτΛૹΕΔ • Cold • ্هҎ֎͍͍ͩͨ Cold • Rx ͷ੍ޚԼʹ͋Δ
Slide 22
Slide 22 text
·ͱΊ
Slide 23
Slide 23 text
·ͱΊ • εέδϡʔϥ • Γସ͑Δํ๏ • Hot ͱ Cold • Hot Γସ͑Ͱ͖ͳ͍