Observables vs Promises Asynchronous programming in JavaScript can be achieved by using - Callbacks, Promises, async/await, RxJs Observables Observables are used to transfer messages between publishers and subscribers in your applications. Observables are a part of RxJs(Reactive extensions for javascript) which is a library for reactive programming using observables. Angular uses observables for a lot of asynchronous programming and event handling. For example, For transmitting data between components - EventEmitter extends RxJs Subject and exposes a emit() method to send values to the subscribers. Angular HTTP Module uses observables to handle AJAX requests and responses - Angular Httpclient returns an observable when making HTTP calls ex. http.get('URL') returns an observable. Few Advantages are the requests can be cancelled through the unsubscribe method, failed requests are retired easily) The ROUTER and FORMS module use observables to listen and respond