Advanced RxJS

with Brian Love


Angular only has a few dependencies, and RxJS is one of them. Angular relies on the Observable primitive for asynchronous fetching and events. This requires Angular developers to learn and understand the Observable primitive. While an Angular developer can stop there, you can choose to build reactive Angular application using RxJS, which include more than just the Observable.

In this workshop, you'll dive into Subject and its variants, multicasted Observables, and the operators for multicasting, error handling, creating custom operators, and testing custom operators. If you have used Subject, or potentially BehaviorSubject, this workshop is still for you - you'll learn about the other popular extensions to Subject, such as the WebSocketSubject that provides incredible opportunities for building reactive Angular applications.


What you’ll learn:


  • refCount()
  • publish()
  • retry() and retryWhen()
  • bufferCount()
  • sequenceEqual()
  • window() and windowTime()
  • ... and many more!


Workshop Outline:


  • Subject
  • Recap Observer
  • Observables are Unicast
  • Exercise - Unicast
  • Solution - Unicast
  • Subjects are Multicast
  • Exercise - Multicast
  • Solution - Multicast
  • Multicasting Operators
  • multicast() Operator
  • Exercise - multicast() Operator
  • Solution - multicast() Operator
  • refCount() Operator
  • Exercise - refCount() Operator
  • Solution - refCount() Operator
  • publish() Operator
  • Exercise - publish() Operator
  • Solution - publish() Operator
  • Subject Variants
  • AsyncSubject
  • Exercise - AsyncSubject
  • Solution - AsyncSubject
  • BehaviorSubject
  • Exercise - BehaviorSubject
  • Solution - BehaviorSubject
  • ReplaySubject
  • Exercise - ReplaySubject
  • Solution - ReplaySubject
  • WebSocketSubject
  • Exercise - WebSocketSubject
  • Solution - WebSocketSubject
  • Error Handling
  • Error Notification
  • Error Notification
  • throwError() Operator
  • Exercise - throwError() Operator
  • Solution - throwError() Operator
  • catchError() Operator
  • Exercise - catchError() Operator
  • Solution - catchError() Operator
  • finalize() Operator
  • Exercise - finalize() Operator
  • Solution - finalize() Operator
  • retry() Operator
  • Exercise - retry() Operator
  • Solution - retry() Operator
  • retryWhen() Operator
  • Exercise - retryWhen() Operator
  • Solution - retryWhen() Operator
  • throwIfEmpty() Operator
  • Custom Operators
  • Higher-Order Observables
  • Exercise - Pipe Function
  • Solution - Pipe Function
  • Higher-order Function Operator
  • Exercise - Higher-order Function Operator
  • Solution - Higher-order Function Operator
  • Testing
  • TestScheduler
  • Marble Syntax
  • Getting Started with Marble Tests
  • Exercise - First Test
  • Solution - First Test
  • Exercise - Subscription
  • Solution - Subscription
  • Exercise - Error
  • Solution - Error
  • Flush
  • Exercise - Test Custom Operator
  • Solution - Test Custom Operator

Full-Day Workshop