Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rx 101
Search
Matt Stasch
June 26, 2015
Programming
0
840
Rx 101
Introduction to Reactive Extensions
Matt Stasch
June 26, 2015
Tweet
Share
More Decks by Matt Stasch
See All by Matt Stasch
Monads in .NET
mat3u
0
430
HATEOAS dla ludzi!
mat3u
0
500
Architektura, która pomaga!
mat3u
0
580
Domain Events - czyli jak radzić sobie z rzeczywistością!
mat3u
1
900
F# 101
mat3u
0
780
Prosta architektura dla nieprostego systemu
mat3u
1
810
Other Decks in Programming
See All in Programming
KoogではじめるAIエージェント開発
hiroaki404
1
140
Claude Agent SDK を使ってみよう
hyshu
0
1.4k
AIと人間の共創開発!OSSで試行錯誤した開発スタイル
mae616
2
830
AkarengaLT vol.38
hashimoto_kei
1
130
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
580
Vueのバリデーション、結局どれを選べばいい? ― 自作バリデーションの限界と、脱却までの道のり ― / Which Vue Validation Library Should We Really Use? The Limits of Self-Made Validation and How I Finally Moved On
neginasu
2
1.7k
Go言語はstack overflowの夢を見るか?
logica0419
0
650
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
18
9.1k
CSC305 Lecture 09
javiergs
PRO
0
320
Leading Effective Engineering Teams in the AI Era
addyosmani
7
670
alien-signals と自作 OSS で実現する フレームワーク非依存な ロジック共通化の探求 / Exploring Framework-Agnostic Logic Sharing with alien-signals and Custom OSS
aoseyuu
2
790
品質ワークショップをやってみた
nealle
0
650
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Designing for humans not robots
tammielis
254
26k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
670
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Code Review Best Practice
trishagee
72
19k
Statistics for Hackers
jakevdp
799
220k
RailsConf 2023
tenderlove
30
1.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Transcript
Introduction to Rx Mateusz Stasch
2 1 N (-> ∞) Synchronous T IEnumerable<T> Iterable<T> Asynchronous
Task<T> Future<T> Promise<T> IObservable<T> Observable<T>
3 IObservable<T> IObserver<T>
4 IObservable<T> IObserver<T> public interface IObservable<out T> { IDisposable Subscribe(IObserver<T>
observer); } public interface IObserver<in T> { void OnCompleted(); void OnError(Exception error); void OnNext(T value); }
5 IObservable<T> IObserver<T> public interface IObservable<out T> { IDisposable Subscribe(IObserver<T>
observer); } public interface IObserver<in T> { void OnCompleted(); void OnError(Exception error); void OnNext(T value); }
6 IObservable<T> events.Throttle(TimeSpan.FromMilliseconds(100)) .Select(e => HandleDeviceConnDiscon(e.EventArgs)) .Subscribe(v => Console.WriteLine("2: {0}",
v));
7 IObservable<T> IObserver<T> subscribe
8 IObservable<T> IObserver<T> subscribe onNext
9 IObservable<T> IObserver<T> subscribe onNext / onCompleted
10 IObservable<T> IObserver<T> subscribe onNext onError
11 IObservable<T> IObserver<T> subscribe onNext unsubscribe
12 Demo
13 IObservable<T> IObserver<T> subscribe onNext onError
14 IObservable<T> IObserver<T> subscribe onNext onError ObserveOn(Scheduler)
15 IObservable<T> IObserver<T> subscribe onNext onError ObserveOn(Scheduler)
16 IObservable<T> IObserver<T> subscribe onNext onError SubscribeOn(Scheduler)
17 IObservable<T> IObserver<T> subscribe onNext onError SubscribeOn(Scheduler)
18 IObservable<T> IObserver<T> subscribe onNext onError SubscribeOn(Scheduler)
19 Rx will pick a default scheduler by using the
principle of least concurrency… https://msdn.microsoft.com/en-us/library/hh242963(v=vs.103).aspx
20 Schedulers CurrentThread Immediate TaskPool ThreadPool
NewThread
21 Schedulers CurrentThread Immediate TaskPool ThreadPool
NewThread Actor-Model Timers Own implementations
22 Demo
23 var sequence = new Subject<int>(); Console.WriteLine("Next line should lock
the system."); var value = sequence.First(); sequence.OnNext(1); Console.WriteLine("I can never execute....");
24 http://reactivex.io/ http://reactivex.io/documentation/operators/combinelatest.html
25 https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 http://reactivex.io/ http://reactivex.io/tutorials.html http://www.introtorx.com/
Naming Convention http://onoffswitch.net/rxjava-observables-akka-actors/ Bibliography