Upload
yuki-takahashi
View
339
Download
5
Embed Size (px)
Citation preview
RxSwift @ RxSwift
https://speakerdeck.com/bricklife/rxswiftfalseobserveontosubscribeonwoli-jie-suru
• RxMarbles
Hot
• RxSwift Operator
ReactiveX
(Driver …)
• Operator
• Hot / Cold
• RxSwift v2.5.0 (2016 7 master)
• 1
1
Operator source
Sequence Map Filter
↑
Sequence Map Filter
↑
filter
filter
Filter
filter
source filter
Observable
map
Map
source
Map source Sequence(Sequence Observable.of )
source
Filter source Map
source
Sequence Map Filter
source
source
Sequence Map Filter
source
source
source
Sequence Map Filter
source
source
create Operator source
• create, just, of, error, never create
Operator source
• map filter Operator
Hot subscribeOn/observeOn
source
create Operator source
• Operator
create Operator
source
• source Observable
source ( ) subscribe
• ( )subscribe
Hot / Cold Operator
source
• create Operator Observable
source
source
Sequence Map Filter
source
2
Operator
Operator
Operator
• source subscribe
• source
Operator
Sequence Map Filter Observer
subscribe
Operator
subscribe
Sequence Map Filter Observer
subscribe subscribe
source subscribe
Operator
Sequence Map Filter Observer
on on on
Operator
subscribe
Sequence Map Filter Observer
subscribe subscribe
on on on
Operator
3
• source subscribe
• subscribe
• on
: Filter
: Filter
run subscribe
: Filter
sink source subscribe
: Filter
Sequence Map Filter Observer
subscribe
subscribe
: Filter
Sequence Map Filter Observer
subscribe subscribe
source subscribe
: Filter
: Filter
on source
: Filter
Next
: Filter
: Filter
: Filter
Sequence Map Filter Observer
on
source
: Filter
Sequence Map Filter Observer
on on
✌('ω'✌ ) ✌('ω')✌ ( ✌'ω')✌
3
• source subscribe
• subscribe
• on
Subject …
3
• source subscribe
• subscribe
• on
create Operator …
• subscribe
3
Sink / SinkIter
( ) Operator
• source subscribe
• source
( ) Operator
• source subscribe
• source
subscribe observer
Filter
Filter
Filter
Sink
Sink
• ( )source observer
• Filter FilterSink Map MapSink
Operator Sink
(subscribe )
Sequence Map Filter Observer
Filter
Sequence Map Filter Observer
subscribe run
subscribe(observer)
Filter
Sequence Map Filter Observer
subscribe(observer)
observer
Filter
Sequence Map Filter Observer
observer FilterSink
FilterSink(observer)
Filter
Sequence Map Filter Observer
FilterSink source subscribe
source.subscribe(FilterSink(observer))
Map
Sequence Map Filter Observer
source.subscribe(FilterSink(observer))
Map
Sequence Map Filter Observer
source.subscribe(FilterSink(observer))
observer FilterSink(observer)
Map
Sequence Map Filter Observer
MapSink(FilterSink(observer))
observer FilterSink
Map
Sequence Map Filter Observer
source.subscribe(MapSink(FilterSink(observer)))
MapSink source subscribe
(on )
MapSink
Sequence Map Filter Observer
MapSink(FilterSink(observer)).on(.Next(2))
MapSink
Sequence Map Filter Observer
selector
.Next(2) → .Next(4)
MapSink
Sequence Map Filter Observer
FilterSink(observer).on(.Next(4))
FilterSink
Sequence Map Filter Observer
FilterSink(observer).on(.Next(4))
FilterSink
Sequence Map Filter Observer
value % 4 == 0
FilterSink
Sequence Map Filter Observer
observer.on(.Next(4))
✌('ω'✌ ) ✌('ω')✌ ( ✌'ω')✌
subscribe(MapSink(FilterSink(observer)))
Sequence Map Filter Observer
subscribe(FilterSink(observer))subscribe(observer)
observer Sink
source subscribe
Sequence Map Filter Observer
observer.on(.Next)FilterSink(observer).on(.Next)
MapSink(FilterSink(observer)).on(.Next)
Sink
observer
SinkIter
SinkIter
• merge flatMap ( )
Observable<Observable<E>>
SinkIter
Observable<Observable<E>>
SinkIter
Observable<Observable<E>> Observable
subscribe Sink
SinkIter
Observable<Observable<E>> Observable
subscribe SinkIter
Cold Observable
Cold Observable
• subscribe
• subscribe
Just
Just
subscribe ….
Just
Cold
Cold
subscribe
Just Map Filter Observer
subscribe subscribe
on on on
BehaviorSubject
BehaviorSubject
•
subscribe
BehaviorSubject
BehaviorSubject
observer
BehaviorSubject
subscribe
BehaviorSubject
subscribe observer
BehaviorSubject
BehaviorSubject
on
BehaviorSubject
BehaviorSubject
Observer
✌('ω'✌ ) ✌('ω')✌ ( ✌'ω')✌
• Rx Operator
•