To master Angular, you must stop thinking about isolated 'events' and start thinking about continuous 'streams' of data.
1Eager vs. Lazy
When you create a Promise, the work starts immediately. If you're fetching data, the request goes out the moment the code runs. Observables, however, are blueprints. They define 'how' data should be handled, but they don't 'do' anything until a consumer calls .subscribe(). This laziness allows Angular to be incredibly efficient, only processing data when there's an active observer.
2Single vs. Multiple
A Promise is a guarantee of a single resolution: it either succeeds or fails once. An Observable is a stream. It can emit a value, wait three seconds, emit another value, and then eventually complete. This makes Observables ideal for things like handling user clicks, real-time web sockets, or search inputs where the value changes multiple times.
