Promises deliver a single value once and then complete. Observables can emit many values over time, allowing multiple data events.
this.myObservable.subscribe(val => console.log('First:', val)); this.myObservable.subscribe(val => console.log('Second:', val));
Each subscription to an Observable is independent. Both subscribers receive all emitted values separately.
Observables support cancellation by unsubscribing, which stops emissions and allows cleanup. Promises run to completion and cannot be cancelled.
Option B uses the correct Observable constructor and methods: next() to emit values and complete() to finish. Option B is deprecated syntax. Option B creates a Promise, not an Observable. Option B uses invalid method names.
Without unsubscribing, the Observable keeps running and holding resources even after the component is gone, causing memory leaks and possible bugs.