Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rx 101

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Rx 101

Introduction to Reactive Extensions

Avatar for Matt Stasch

Matt Stasch

June 26, 2015
Tweet

More Decks by Matt Stasch

Other Decks in Programming

Transcript

  1. 2 1 N (-> ∞) Synchronous T IEnumerable<T> Iterable<T> Asynchronous

    Task<T> Future<T> Promise<T> IObservable<T> Observable<T>
  2. 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); }
  3. 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); }
  4. 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
  5. 21 Schedulers  CurrentThread  Immediate  TaskPool  ThreadPool

     NewThread  Actor-Model  Timers  Own implementations
  6. 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....");