In a nutshell, the main differences between a Promise and an Observable are as follows:
- a Promise is eager, whereas an Observable is lazy,
- a Promise is always asynchronous, while an Observable can be either synchronous or asynchronous,
- a Promise can provide a single value, whereas an Observable is a stream of values (from 0 to multiple values),
- you can apply RxJS operators to an Observable to get a new tailored stream.
a more detailed can be found in this article