SlideShare a Scribd company logo
Taming Asynchrony
using RxJS
Angelo Simone Scotto
Cluster Reply
26 October 2015,
Milan
15
2
What is Rx ?
MSDN introduction on Rx
3
What is Rx ?
MSDN introduction on Rx
4
• Design Patterns was
published.
• Written by Gamma, Helm,
Johnson, Vlissided (Gang of
Four)
• Contains 23 «recipes» to
solve abstract problems with
Object-Oriented approach.
Back in 1994…
5
Iterator Pattern
6
Iterator Pattern C#
Aggregate<T>
Iterator<T> CreateIterator()
Iterator<T>
void First()
void Next()
bool IsDone()
T CurrentItem()
IEnumerable<T>
IEnumerator<T> GetEnumerator()
IEnumerator<T>
void Reset()
bool MoveNext()
T Current()
7
Concurrency
Single Multiple
Sync/Pull T IEnumerable<T>
Iterable of T
Async/Push
Task<T>
Promise of T
Future<T>
?
Iterator is represents a «pull-based» collection, what about a «push-
based» collection?
«Tell me and I forget, teach me and I may remember,
involve me and I learn»
Benjamin Franklin
9
• Hint 1: Subject of pull based collection is consumer of collection
(«give me the next element»)
• Hint 2: Subject of push based collection is producer of collection
(«take this next element»)
• Hint 3: Input / Output are inverted between producer and consumer
(producer see next element as output, consumer as input)
• A push-based collection is therefore the dual of a pull based
collection.
• To switch consumer with producer we just need to switch input with
output.
Duality
10
Duality
IEnumerable<T>
IEnumerator<T> GetEnumerator()
IEnumerator<T>
bool MoveNext()
T Current()
IDualEnumerable<T>
???
IDualEnumerator<T>
???
11
Duality
IEnumerable<T>
IEnumerator<T> GetEnumerator()
IEnumerator<T>
bool MoveNext()
T Current()
IDualEnumerable<T>
void ???
IDualEnumerator<T>
???
12
Duality
IEnumerable<T>
IEnumerator<T> GetEnumerator()
IEnumerator<T>
bool MoveNext()
T Current()
IDualEnumerable<T>
void ???(IDualEnumerator<T>)
IDualEnumerator<T>
???
13
Duality
IEnumerable<T>
IEnumerator<T> GetEnumerator()
IEnumerator<T>
bool MoveNext()
T Current()
IDualEnumerable<T>
void ???(IDualEnumerator<T>)
IDualEnumerator<T>
void ???
14
Duality
IEnumerable<T>
IEnumerator<T> GetEnumerator()
IEnumerator<T>
bool MoveNext()
T Current()
IDualEnumerable<T>
void ???(IDualEnumerator<T>)
IDualEnumerator<T>
void ???(
T
)
15
Duality
IEnumerable<T>
IEnumerator<T> GetEnumerator()
IEnumerator<T>
bool MoveNext()
T Current()
IDualEnumerable<T>
void ???(IDualEnumerator<T>)
IDualEnumerator<T>
void ???(
T,
…,
bool
)
16
Duality
IEnumerable<T>
IEnumerator<T> GetEnumerator()
IEnumerator<T>
bool MoveNext()
T Current()
IDualEnumerable<T>
void ???(IDualEnumerator<T>)
IDualEnumerator<T>
void ???(
T,
Exception,
bool
)
17
Duality
IEnumerable<T>
IEnumerator<T> GetEnumerator()
IEnumerator<T>
bool MoveNext()
T Current()
IDualEnumerable<T>
void ???(IDualEnumerator<T>)
IDualEnumerator<T>
void OnNext(T)
void OnError(Exception)
void OnComplete()
18
Observer
19
Observer
Subject
void Attach(Observer)
void Detach(Observer)
Notify()
Observer
void Update()
20
Observer
Subject
void Attach(Observer)
void Detach(Observer)
Notify()
Observer
void Update()
21
Observer
Subject<T>
void Attach(Observer<T>)
void Detach(Observer<T>)
Notify(T)
Observer<T>
void Update(T)
22
IDualEnumerable = Observer 2.0
Subject<T>
void Attach(Observer<T>)
void Detach(Observer<T>)
Observer<T>
void Update(T)
IDualEnumerable<T>
void ???(IDualEnumerator<T>)
IDualEnumerator<T>
void OnNext(T)
void OnError(Exception)
void OnCompleted()
23
IDualEnumerable = Observer 2.0
Subject<T>
void Attach(Observer<T>)
void Detach(Observer<T>)
Observer<T>
void Update(T)
IDualEnumerable<T>
void ???(IDualEnumerator<T>)
IDualEnumerator<T>
void OnNext(T)
void OnError(Exception)
void OnCompleted()
24
IDualEnumerable = IObservable
Subject<T>
void Attach(Observer<T>)
void Detach(Observer<T>)
Observer<T>
void Update(T)
IObservable<T>
void Subscribe(IObserver<T>)
IObserver<T>
void OnNext(T)
void OnError(Exception)
void OnCompleted()
25
IDualEnumerable = IObservable
Subject<T>
void Attach(Observer<T>)
void Detach(Observer<T>)
Observer<T>
void Update(T)
IObservable<T>
void Subscribe(IObserver<T>)
void Unsubscribe(IObserver<T>)
IObserver<T>
void OnNext(T)
void OnError(Exception)
void OnCompleted()
26
IDualEnumerable = IObservable
Subject<T>
void Attach(Observer<T>)
void Detach(Observer<T>)
Observer<T>
void Update(T)
IObservable<T>
IDisposable Subscribe(IObserver<T>)
IObserver<T>
void OnNext(T)
void OnError(Exception)
void OnCompleted()
27
IDualEnumerable = IObservable
IObservable<T>
IDisposable Subscribe(IObserver<T>)
IObserver<T>
void OnNext(T)
void OnError(Exception)
void OnCompleted()
• Unsubscribe was not
necessary on iterator, added
as Subscribe return value.
• Event Streams does not
complete neither fail.
• Collection can, hopefully,
complete and can,
unfortunately, raise
exceptions.
28
Promises are also Observables!
Single Multiple
Sync/Pull T IEnumerable<T>
Iterable of T
Async/Push
Task<T>
Promise of T
Future<T>
IObservable<T>
29
Promises are also Observables!
Single Multiple
Sync/Pull T IEnumerable<T>
Iterable of T
Async/Push
Task<T>
Promise of T
Future<T>
IObservable<T>
• A single element of T can be seen as a specific IEnumerable<T>
30
Promises are also Observables!
Single Multiple
Sync/Pull T IEnumerable<T>
Iterable of T
Async/Push
Task<T>
Promise of T
Future<T>
IObservable<T>
• A single element of T can be seen as a specific IEnumerable<T>
• A single promise of T can be seen as a specific IObservable<T>
«Perfection is achieved, not when there is nothing more
to add, but when there is nothing left to take away»
Antoine de Saint-Exupéry
32
DEMO
Code can be found at: http://bit.ly/1GaADhX
33
Language neutral model based on 3 concepts:
1. Observable Pattern.
2. Composition operators & grammar.
3. Schedulers and Time.
Rx is more than the Observable Pattern
34
filter() : Filter elements
0 431 2
0 4
Emit only those items from an Observable that
pass a predicate test
35
map() : Transform elements
0 1 2
0 1
43
2 3 4
Transform the items emitted by an Observable by
applying a function to each item
36
takeUntil() : Complete
0 1 2 43
0 1 2
Hint: Don’t unsubscribe from Events, complete them when another fires.
Discard any items emitted by an Observable after
a second Observable emits an item or terminates
37
DEMO
Code can be found at: http://bit.ly/1GaADhX
38
flatMap() : Map and then flatten
Transform the items emitted by an Observable into
Observables, then flatten the emissions from
those into a single Observable
39
flatMap() : Map and then flatten
Notice: if mapped observables are slow, events may interleave
Notice: if interleaving is not acceptable, use concatMap instead.
Transform the items emitted by an Observable into
Observables, then flatten the emissions from
those into a single Observable
40
flatMapLatest () : Map and then flatten
Notice: flatMapLatest exists that is like flatMap but keeps listening
on last Observable only.
Transform the items emitted by an Observable into
Observables, then flatten the emissions from
those into a single Observable
41
A simple example : Autocompletion
42
A simple example : Autocompletion
Events as Observables
Iterable as Observable
Promise as Observable
43
A simple example : Autocompletion
DEMO
Code can be found at: http://bit.ly/1GaADhX
44
Language neutral model based on 3 concepts:
1. Observable Pattern.
2. Composition / Query operations & grammar.
3. Schedulers and Time.
Rx is more than the Observable Pattern
45
Rx schedulers provide an abstraction that allows work to be scheduled
to run, possibly in the future, it controls when a subscription starts and
when notifications are published.
One can:
• Subscribe using a particular scheduler (using subscribeOn)
• Observe using a particular scheduler (using observeOn)
Plus, every operator that needs to introduce concurrency in the system
(mainly generators) is parametrized by an optional scheduler.
Since JavaScript is essentially single-threaded, schedulers options are
quite limited, and the default scheduler is usually the right choice.
Schedulers
46
Available Schedulers
Scheduler Description
immediate Gets a scheduler that schedules work
immediately on the current thread.
currentThread Gets a scheduler that schedules work as soon
as possible on the current thread.
default Gets a scheduler that schedules work via a
timed callback based upon platform.
TestScheduler Virtual time scheduler used for testing
applications and libraries built using Reactive
Extensions.
HistoricalScheduler Provides a virtual time scheduler that uses
a Date for absolute time and time spans for
relative time.
47
Schedulers in action!
48
Use Rx and Observable to help you to:
• Avoid callback hell, tons of callbacks and global variables in your
async code, relay instead on just one, carefully crafted, observable.
• Enhance promises in supporting multi-value and cancellation.
• Forget removeEventListener and unsubscription/cancellation code,
just use takeUntil on your observables.
Conclusions
49
• ReactiveX: Homepage of RX project.
• LearnRX: Online tutorial, published initially by Netflix as training for
its developers.
• RxJSKoans: GitHub repository full of small exercises of increasing
difficulty using RxJS.
• Rx Workshop: A set of videos teaching you Rx.NET directly from Rx
team members.
• IntroToRx: Free book about previous version of Rx.NET (v1.x). Still
a great introduction as concept are still valid and API is not changed
so much.
To continue your journey…
webnextconf.eu
Thanks
Angelo Simone Scotto
a.scotto@reply.eu
Except where otherwise noted,
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

More Related Content

What's hot

Pythran: Static compiler for high performance by Mehdi Amini PyData SV 2014
Pythran: Static compiler for high performance by Mehdi Amini PyData SV 2014Pythran: Static compiler for high performance by Mehdi Amini PyData SV 2014
Pythran: Static compiler for high performance by Mehdi Amini PyData SV 2014
PyData
 
Scientific visualization with_gr
Scientific visualization with_grScientific visualization with_gr
Scientific visualization with_gr
Josef Heinen
 
Stack
StackStack
A peek on numerical programming in perl and python e christopher dyken 2005
A peek on numerical programming in perl and python  e christopher dyken  2005A peek on numerical programming in perl and python  e christopher dyken  2005
A peek on numerical programming in perl and python e christopher dyken 2005
Jules Krdenas
 
Computer notes - Sorting
Computer notes  - SortingComputer notes  - Sorting
Computer notes - Sorting
ecomputernotes
 
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Takahiro Harada
 
presentation
presentationpresentation
presentation
William Cunningham
 
Lec7
Lec7Lec7
.Net 4.0 Threading and Parallel Programming
.Net 4.0 Threading and Parallel Programming.Net 4.0 Threading and Parallel Programming
.Net 4.0 Threading and Parallel Programming
Alex Moore
 
Cryptanalysis with a Quantum Computer - An Exposition on Shor's Factoring Alg...
Cryptanalysis with a Quantum Computer - An Exposition on Shor's Factoring Alg...Cryptanalysis with a Quantum Computer - An Exposition on Shor's Factoring Alg...
Cryptanalysis with a Quantum Computer - An Exposition on Shor's Factoring Alg...
Daniel Hutama
 
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Amr E. Mohamed
 
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016 OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
otoyinc
 
stack and queue array implementation in java.
stack and queue array implementation in java.stack and queue array implementation in java.
stack and queue array implementation in java.
CIIT Atd.
 
Data Structures - Lecture 6 [queues]
Data Structures - Lecture 6 [queues]Data Structures - Lecture 6 [queues]
Data Structures - Lecture 6 [queues]
Muhammad Hammad Waseem
 
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Amr E. Mohamed
 
SHA1 collision analysis and resolving a problem of recursive hashing with xra...
SHA1 collision analysis and resolving a problem of recursive hashing with xra...SHA1 collision analysis and resolving a problem of recursive hashing with xra...
SHA1 collision analysis and resolving a problem of recursive hashing with xra...
Diego Hernan Marciano
 
Stacks queues
Stacks queuesStacks queues
Stacks queues
Rajendran
 
Python for Scientific Computing -- Ricardo Cruz
Python for Scientific Computing -- Ricardo CruzPython for Scientific Computing -- Ricardo Cruz
Python for Scientific Computing -- Ricardo Cruz
rpmcruz
 
JCConf 2020 - New Java Features Released in 2020
JCConf 2020 - New Java Features Released in 2020JCConf 2020 - New Java Features Released in 2020
JCConf 2020 - New Java Features Released in 2020
Joseph Kuo
 
Ecet 345 Enthusiastic Study / snaptutorial.com
Ecet 345 Enthusiastic Study / snaptutorial.comEcet 345 Enthusiastic Study / snaptutorial.com
Ecet 345 Enthusiastic Study / snaptutorial.com
Stephenson34
 

What's hot (20)

Pythran: Static compiler for high performance by Mehdi Amini PyData SV 2014
Pythran: Static compiler for high performance by Mehdi Amini PyData SV 2014Pythran: Static compiler for high performance by Mehdi Amini PyData SV 2014
Pythran: Static compiler for high performance by Mehdi Amini PyData SV 2014
 
Scientific visualization with_gr
Scientific visualization with_grScientific visualization with_gr
Scientific visualization with_gr
 
Stack
StackStack
Stack
 
A peek on numerical programming in perl and python e christopher dyken 2005
A peek on numerical programming in perl and python  e christopher dyken  2005A peek on numerical programming in perl and python  e christopher dyken  2005
A peek on numerical programming in perl and python e christopher dyken 2005
 
Computer notes - Sorting
Computer notes  - SortingComputer notes  - Sorting
Computer notes - Sorting
 
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
 
presentation
presentationpresentation
presentation
 
Lec7
Lec7Lec7
Lec7
 
.Net 4.0 Threading and Parallel Programming
.Net 4.0 Threading and Parallel Programming.Net 4.0 Threading and Parallel Programming
.Net 4.0 Threading and Parallel Programming
 
Cryptanalysis with a Quantum Computer - An Exposition on Shor's Factoring Alg...
Cryptanalysis with a Quantum Computer - An Exposition on Shor's Factoring Alg...Cryptanalysis with a Quantum Computer - An Exposition on Shor's Factoring Alg...
Cryptanalysis with a Quantum Computer - An Exposition on Shor's Factoring Alg...
 
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
 
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016 OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
 
stack and queue array implementation in java.
stack and queue array implementation in java.stack and queue array implementation in java.
stack and queue array implementation in java.
 
Data Structures - Lecture 6 [queues]
Data Structures - Lecture 6 [queues]Data Structures - Lecture 6 [queues]
Data Structures - Lecture 6 [queues]
 
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
Modern Control - Lec 04 - Analysis and Design of Control Systems using Root L...
 
SHA1 collision analysis and resolving a problem of recursive hashing with xra...
SHA1 collision analysis and resolving a problem of recursive hashing with xra...SHA1 collision analysis and resolving a problem of recursive hashing with xra...
SHA1 collision analysis and resolving a problem of recursive hashing with xra...
 
Stacks queues
Stacks queuesStacks queues
Stacks queues
 
Python for Scientific Computing -- Ricardo Cruz
Python for Scientific Computing -- Ricardo CruzPython for Scientific Computing -- Ricardo Cruz
Python for Scientific Computing -- Ricardo Cruz
 
JCConf 2020 - New Java Features Released in 2020
JCConf 2020 - New Java Features Released in 2020JCConf 2020 - New Java Features Released in 2020
JCConf 2020 - New Java Features Released in 2020
 
Ecet 345 Enthusiastic Study / snaptutorial.com
Ecet 345 Enthusiastic Study / snaptutorial.comEcet 345 Enthusiastic Study / snaptutorial.com
Ecet 345 Enthusiastic Study / snaptutorial.com
 

Viewers also liked

Keep your side-effects 
in the right place with 
redux observable
Keep your side-effects 
in the right place with 
redux observableKeep your side-effects 
in the right place with 
redux observable
Keep your side-effects 
in the right place with 
redux observable
Viliam Elischer
 
RxJS101 - What you need to know to get started with RxJS tomorrow
RxJS101 - What you need to know to get started with RxJS tomorrowRxJS101 - What you need to know to get started with RxJS tomorrow
RxJS101 - What you need to know to get started with RxJS tomorrow
Viliam Elischer
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016
Ben Lesh
 
Compose Async with RxJS
Compose Async with RxJSCompose Async with RxJS
Compose Async with RxJS
Kyung Yeol Kim
 
RxJS + Redux + React = Amazing
RxJS + Redux + React = AmazingRxJS + Redux + React = Amazing
RxJS + Redux + React = Amazing
Jay Phelps
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJS
stefanmayer13
 

Viewers also liked (6)

Keep your side-effects 
in the right place with 
redux observable
Keep your side-effects 
in the right place with 
redux observableKeep your side-effects 
in the right place with 
redux observable
Keep your side-effects 
in the right place with 
redux observable
 
RxJS101 - What you need to know to get started with RxJS tomorrow
RxJS101 - What you need to know to get started with RxJS tomorrowRxJS101 - What you need to know to get started with RxJS tomorrow
RxJS101 - What you need to know to get started with RxJS tomorrow
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016
 
Compose Async with RxJS
Compose Async with RxJSCompose Async with RxJS
Compose Async with RxJS
 
RxJS + Redux + React = Amazing
RxJS + Redux + React = AmazingRxJS + Redux + React = Amazing
RxJS + Redux + React = Amazing
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJS
 

Similar to Taming Asynchrony using RxJS

RxJava - introduction & design
RxJava - introduction & designRxJava - introduction & design
RxJava - introduction & design
allegro.tech
 
.Net Collection Classes Deep Dive - Rocksolid Tour 2013
.Net Collection Classes Deep Dive  - Rocksolid Tour 2013.Net Collection Classes Deep Dive  - Rocksolid Tour 2013
.Net Collection Classes Deep Dive - Rocksolid Tour 2013
Gary Short
 
Reactive Qt - Ivan Čukić (Qt World Summit 2015)
Reactive Qt - Ivan Čukić (Qt World Summit 2015)Reactive Qt - Ivan Čukić (Qt World Summit 2015)
Reactive Qt - Ivan Čukić (Qt World Summit 2015)
Ivan Čukić
 
High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018
Zahari Dichev
 
Kyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfKyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdf
Flavio W. Brasil
 
RxJava 2 Reactive extensions for the JVM
RxJava 2  Reactive extensions for the JVMRxJava 2  Reactive extensions for the JVM
RxJava 2 Reactive extensions for the JVM
Netesh Kumar
 
RxJava2 Slides
RxJava2 SlidesRxJava2 Slides
RxJava2 Slides
YarikS
 
Reactive Extensions: classic Observer in .NET
Reactive Extensions: classic Observer in .NETReactive Extensions: classic Observer in .NET
Reactive Extensions: classic Observer in .NET
EPAM
 
Introduction to Matlab
Introduction to MatlabIntroduction to Matlab
Introduction to Matlab
Amr Rashed
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
Jörn Guy Süß JGS
 
响应式编程及框架
响应式编程及框架响应式编程及框架
响应式编程及框架
jeffz
 
JDK8 Functional API
JDK8 Functional APIJDK8 Functional API
JDK8 Functional API
Justin Lin
 
Building responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresherBuilding responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresher
Tamir Dresher
 
RxJava@Android
RxJava@AndroidRxJava@Android
RxJava@Android
Maxim Volgin
 
Akka.NET streams and reactive streams
Akka.NET streams and reactive streamsAkka.NET streams and reactive streams
Akka.NET streams and reactive streams
Bartosz Sypytkowski
 
Simple, fast, and scalable torch7 tutorial
Simple, fast, and scalable torch7 tutorialSimple, fast, and scalable torch7 tutorial
Simple, fast, and scalable torch7 tutorial
Jin-Hwa Kim
 
matlab_simulink_for_control082p.pdf
matlab_simulink_for_control082p.pdfmatlab_simulink_for_control082p.pdf
matlab_simulink_for_control082p.pdf
MUHAMMAD FAISAL RASHEED
 
Rx workshop
Rx workshopRx workshop
Rx workshop
Ryan Riley
 
New Functional Features of Java 8
New Functional Features of Java 8New Functional Features of Java 8
New Functional Features of Java 8
franciscoortin
 
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx  - CodeMash2017 - Tamir DresherBuilding responsive applications with Rx  - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
Tamir Dresher
 

Similar to Taming Asynchrony using RxJS (20)

RxJava - introduction & design
RxJava - introduction & designRxJava - introduction & design
RxJava - introduction & design
 
.Net Collection Classes Deep Dive - Rocksolid Tour 2013
.Net Collection Classes Deep Dive  - Rocksolid Tour 2013.Net Collection Classes Deep Dive  - Rocksolid Tour 2013
.Net Collection Classes Deep Dive - Rocksolid Tour 2013
 
Reactive Qt - Ivan Čukić (Qt World Summit 2015)
Reactive Qt - Ivan Čukić (Qt World Summit 2015)Reactive Qt - Ivan Čukić (Qt World Summit 2015)
Reactive Qt - Ivan Čukić (Qt World Summit 2015)
 
High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018
 
Kyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfKyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdf
 
RxJava 2 Reactive extensions for the JVM
RxJava 2  Reactive extensions for the JVMRxJava 2  Reactive extensions for the JVM
RxJava 2 Reactive extensions for the JVM
 
RxJava2 Slides
RxJava2 SlidesRxJava2 Slides
RxJava2 Slides
 
Reactive Extensions: classic Observer in .NET
Reactive Extensions: classic Observer in .NETReactive Extensions: classic Observer in .NET
Reactive Extensions: classic Observer in .NET
 
Introduction to Matlab
Introduction to MatlabIntroduction to Matlab
Introduction to Matlab
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
 
响应式编程及框架
响应式编程及框架响应式编程及框架
响应式编程及框架
 
JDK8 Functional API
JDK8 Functional APIJDK8 Functional API
JDK8 Functional API
 
Building responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresherBuilding responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresher
 
RxJava@Android
RxJava@AndroidRxJava@Android
RxJava@Android
 
Akka.NET streams and reactive streams
Akka.NET streams and reactive streamsAkka.NET streams and reactive streams
Akka.NET streams and reactive streams
 
Simple, fast, and scalable torch7 tutorial
Simple, fast, and scalable torch7 tutorialSimple, fast, and scalable torch7 tutorial
Simple, fast, and scalable torch7 tutorial
 
matlab_simulink_for_control082p.pdf
matlab_simulink_for_control082p.pdfmatlab_simulink_for_control082p.pdf
matlab_simulink_for_control082p.pdf
 
Rx workshop
Rx workshopRx workshop
Rx workshop
 
New Functional Features of Java 8
New Functional Features of Java 8New Functional Features of Java 8
New Functional Features of Java 8
 
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx  - CodeMash2017 - Tamir DresherBuilding responsive applications with Rx  - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
 

More from Angelo Simone Scotto

Keep Calm and Distributed Tracing
Keep Calm and Distributed TracingKeep Calm and Distributed Tracing
Keep Calm and Distributed Tracing
Angelo Simone Scotto
 
Rective Programming with Actor Model in .NET
Rective Programming with Actor Model in .NETRective Programming with Actor Model in .NET
Rective Programming with Actor Model in .NET
Angelo Simone Scotto
 
DevOps, Lean and You
DevOps, Lean and YouDevOps, Lean and You
DevOps, Lean and You
Angelo Simone Scotto
 
Agile, DevOps, X-Teams: Is software a social science?
Agile, DevOps, X-Teams: Is software a social science?Agile, DevOps, X-Teams: Is software a social science?
Agile, DevOps, X-Teams: Is software a social science?
Angelo Simone Scotto
 
Adapt or Go extinct
Adapt or Go extinctAdapt or Go extinct
Adapt or Go extinct
Angelo Simone Scotto
 
Discovering RxJS - MilanoJS Meeting in May 2016
Discovering RxJS - MilanoJS Meeting in May 2016Discovering RxJS - MilanoJS Meeting in May 2016
Discovering RxJS - MilanoJS Meeting in May 2016
Angelo Simone Scotto
 
Redis Labcamp
Redis LabcampRedis Labcamp
Redis Labcamp
Angelo Simone Scotto
 
Are Microservices our future?
Are Microservices our future?Are Microservices our future?
Are Microservices our future?
Angelo Simone Scotto
 
An Introduction to Machine Learning
An Introduction to Machine LearningAn Introduction to Machine Learning
An Introduction to Machine Learning
Angelo Simone Scotto
 
Actor Model & Reactive Manifesto
Actor Model & Reactive ManifestoActor Model & Reactive Manifesto
Actor Model & Reactive Manifesto
Angelo Simone Scotto
 

More from Angelo Simone Scotto (10)

Keep Calm and Distributed Tracing
Keep Calm and Distributed TracingKeep Calm and Distributed Tracing
Keep Calm and Distributed Tracing
 
Rective Programming with Actor Model in .NET
Rective Programming with Actor Model in .NETRective Programming with Actor Model in .NET
Rective Programming with Actor Model in .NET
 
DevOps, Lean and You
DevOps, Lean and YouDevOps, Lean and You
DevOps, Lean and You
 
Agile, DevOps, X-Teams: Is software a social science?
Agile, DevOps, X-Teams: Is software a social science?Agile, DevOps, X-Teams: Is software a social science?
Agile, DevOps, X-Teams: Is software a social science?
 
Adapt or Go extinct
Adapt or Go extinctAdapt or Go extinct
Adapt or Go extinct
 
Discovering RxJS - MilanoJS Meeting in May 2016
Discovering RxJS - MilanoJS Meeting in May 2016Discovering RxJS - MilanoJS Meeting in May 2016
Discovering RxJS - MilanoJS Meeting in May 2016
 
Redis Labcamp
Redis LabcampRedis Labcamp
Redis Labcamp
 
Are Microservices our future?
Are Microservices our future?Are Microservices our future?
Are Microservices our future?
 
An Introduction to Machine Learning
An Introduction to Machine LearningAn Introduction to Machine Learning
An Introduction to Machine Learning
 
Actor Model & Reactive Manifesto
Actor Model & Reactive ManifestoActor Model & Reactive Manifesto
Actor Model & Reactive Manifesto
 

Recently uploaded

Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
KrishnaveniMohan1
 
Beginner's Guide to Observability@Devoxx PL 2024
Beginner's  Guide to Observability@Devoxx PL 2024Beginner's  Guide to Observability@Devoxx PL 2024
Beginner's Guide to Observability@Devoxx PL 2024
michniczscribd
 
The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024
Yara Milbes
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
Luigi Fugaro
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
campbellclarkson
 
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
OnePlan Solutions
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
How GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdfHow GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdf
Zycus
 
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio, Inc.
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
Manyata Tech Park Bangalore_ Infrastructure, Facilities and More
Manyata Tech Park Bangalore_ Infrastructure, Facilities and MoreManyata Tech Park Bangalore_ Infrastructure, Facilities and More
Manyata Tech Park Bangalore_ Infrastructure, Facilities and More
narinav14
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
kalichargn70th171
 
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery FleetStork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Vince Scalabrino
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid
 
Going AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applicationsGoing AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applications
Alina Yurenko
 

Recently uploaded (20)

Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
 
Beginner's Guide to Observability@Devoxx PL 2024
Beginner's  Guide to Observability@Devoxx PL 2024Beginner's  Guide to Observability@Devoxx PL 2024
Beginner's Guide to Observability@Devoxx PL 2024
 
The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
 
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
How GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdfHow GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdf
 
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
Manyata Tech Park Bangalore_ Infrastructure, Facilities and More
Manyata Tech Park Bangalore_ Infrastructure, Facilities and MoreManyata Tech Park Bangalore_ Infrastructure, Facilities and More
Manyata Tech Park Bangalore_ Infrastructure, Facilities and More
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
 
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery FleetStork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
 
Going AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applicationsGoing AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applications
 

Taming Asynchrony using RxJS

Editor's Notes

  1. Basic demo
  2. takeUntil demo
  3. Autocompletion Demo