Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Tyrannosaurus Rx
James Hughes
September 03, 2014
Programming
0
73
Tyrannosaurus Rx
Basic overview of Rx (Reactive Extensions)
James Hughes
September 03, 2014
Tweet
Share
More Decks by James Hughes
See All by James Hughes
Functional Programming with Clojure
kouphax
1
87
React
kouphax
2
650
Play for (Java|Scala)
kouphax
0
88
Devops: A Case Study
kouphax
0
55
Scala for C# Developers
kouphax
5
2.5k
Dropwizard - Production Ready Web Services
kouphax
3
1.3k
Scala for Fun & Profit
kouphax
3
600
What Agile Means To Me
kouphax
0
110
Neo4J: A Case Study
kouphax
3
550
Other Decks in Programming
See All in Programming
Why Airflow? & What's new in Airflow 2.3?
kaxil
0
120
【Scrum Fest Osaka 2022】スクラムチームに放り込まれた若手エンジニアの皆さん、どのように技術のキャッチアップをしていくかイメージはついていますか?
miiiki
0
120
Reactive Java Microservices on Kubernetes with Spring and JHipster
deepu105
1
170
Reactは何を提供するLibraryなのか?
taro28
3
410
Power Automateドリブンのチームマネジメント
hanaseleb
0
190
Haskellでオブジェクト指向プログラミング
koheisakata
0
120
Let's keep Commodore 64 alive for the next 40 years
mehowte
1
110
短納期でローンチした新サービスをJavaで開発した話/launched new service using Java
eichisanden
6
2k
Lancersをコンテナへ本番移行する取り組み
rvirus0817
1
390
Independently together: better developer experience & App performance
bcinarli
0
180
Terraform Plan/Apply結果の自動通知
ymmy02
0
280
io22 extended What's new in app performance
veronikapj
0
340
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1020
420k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
Making the Leap to Tech Lead
cromwellryan
113
7.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
181
15k
The Web Native Designer (August 2011)
paulrobertlloyd
74
1.9k
Faster Mobile Websites
deanohume
294
28k
GraphQLとの向き合い方2022年版
quramy
16
8.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
238
11k
Typedesign – Prime Four
hannesfritz
34
1.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
62k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
Making Projects Easy
brettharned
98
4.3k
Transcript
TYRANNOSAURUS RX
REACTIVE EXTENSIONS
None
Java JS C# Clojure Groovy Scala Kotlin Python Ruby C++
Haskell
var list = [1,2,3,4,5,6,7]; ! for(var i = 0; i
< list.length; i++) { console.log(list[i]) }
var list = [1,2,3,4,5,6,7]; ! list.forEach(function(item) { console.log(item) })
var list = [Promise(), Promise()…]; ! list.forEach(function(item) { console.log(item.get()) })
TIME RUINS EVERYTHING
None
None
None
OBSERVABLES LISTS WITH TIME REIFIED EVENT STREAM PUSH BASED
CREATING OBSERVABLES ITERABLE FUTURE/PROMISE EVENTS RULES OBSERVABLE
CREATING OBSERVABLES Observable.from(new String[] { "The Joker", "The Riddler", "Penguin",
"Catwoman"})
CREATING OBSERVABLES baddies.subscribe((baddie) -> { out.println(baddie + “ is bad.”)
})
CREATING OBSERVABLES The Joker is bad. The Riddler is bad.
Penguin is bad. Catwoman is bad.
CREATING OBSERVABLES class _ extends Subscriber<String> { void onCompleted() {}
void onError(Throwable t) {} void onNext(String s){} }
CREATING OBSERVABLES onNext("The Joker”)
CREATING OBSERVABLES onNext("The Joker”) onNext("The Riddler”)
CREATING OBSERVABLES onNext("The Joker”) onNext("The Riddler”) onNext(“Penguin")
CREATING OBSERVABLES onNext("The Joker”) onNext("The Riddler”) onNext(“Penguin") onNext(“Catwoman")
CREATING OBSERVABLES onCompleted() onNext("The Joker”) onNext("The Riddler”) onNext(“Penguin") onNext(“Catwoman")
ERROR HANDLING onNext("The Joker”)
onNext("The Joker”) onNext("The Riddler”) ERROR HANDLING
X onNext("The Joker”) onNext("The Riddler”) ERROR HANDLING
X onNext("The Joker”) onNext("The Riddler”) onError(ex) ERROR HANDLING
TRANSFORMING OBSERVABLES TURN AN OBSERVABLE OF ONE TYPE INTO ANOTHER
TRANSFORMING OBSERVABLES Observable ints = Observable .interval(1, SECONDS); ! ints.map((i)
-> i + 1) .map((i) -> i + “ seconds”) .subscribe(out::println)
TRANSFORMING OBSERVABLES map map
TRANSFORMING OBSERVABLES 1 seconds 2 seconds 3 seconds 4 seconds
...
TRANSFORMING OBSERVABLES flatMap(), groupBy(), buffer(), window()
FILTERING OBSERVABLES SELECT AND REJECT ITEMS EMITTED BY AN OBSERVABLE
FILTERING OBSERVABLES var keys = Rx.DOM.keypress(el) var ints = keys.filter(isNumeric)
! ints.subscribe(console.log)
FILTERING OBSERVABLES filter X X
FILTERING OBSERVABLES distinct(), timeout(), ignoreElements(), throttleFirst(), debounce(), sample(), first(), last(),
take(), skip()
COMBINING OBSERVABLES COMPOSING MULTIPLE OBSERVABLES INTO A SINGLE OBSERVABLE
COMBINING OBSERVABLES Observable goodies = Observable.from( new String[]{ "Batman", "Robin",
"Alfred", “Batgirl"}); ! goodies.zipWith(baddies, (g,b) -> g + " punches " + b)
COMBINING OBSERVABLES zipWith
COMBINING OBSERVABLES Batman punches The Joker Robin punches The Riddler
Alfred punches Penguin Batgirl punches Catwoman
STUFF AND OTHER THINGS retry(), delay(), timestamp(), amb(), defaultIfEmpty(), reduce(),
count()
None
TYRANNOSAURUS RX