Observables are the standard async handlers in the Angular framework.
By standard, I mean that observables are supported by the async pipe, routing guards, routing resolvers, component event emitters and many other places.
The Angular team has put in a lot of effort to support promises as a fallback for a lot of those features, but under the hood those promises are just converted to observables anyway.
By making Http requests observables the Angular team is making async operations in the core consistent with everything elsewhere.
There are still some advantages of observables over promises, but this is primarily opinniated (as in my own opinions).
- You can easily mix between Http requests and WebSockets in a service and expose the APIs as observables. The consumer of the service will not know the difference.
- You can easily convert a Http request for an array into an observable that emits each item individually. This makes dispatching data to different consumers a lot easier.
- Promises can break when they are not chained properly. These common bugs are often avoided with observables.