Observables
offer a flexible set of APIs for composing and transforming asynchronous streams. They provide a multitude of functions to create streams from many other types, and to manipulate and transform them. We've taken a look at how Angular 2 uses Observables
to create streams from many other types to read user input, perform asynchronous data fetches and set up custom emit/subscribe routines.