Middle
What are the similarities and differences between Observable and Promise?
sobes.tech AI
Answer from AI
Observable represents a data stream capable of emitting multiple values over time. It is reactive and supports subscription cancellation. Promise always resolves or rejects only once and is one-time. Observable supports operators for transforming data, Promise does not.
| Characteristic | Observable | Promise |
|---|---|---|
| Number of values | Can emit multiple values | Always one value (resolve/reject) |
| Cancellation | Supports subscription cancellation | Does not support cancellation |
| Reactivity | Reactive | Not reactive |
| Operators | Supports operators (map, filter, etc.) | No |
| Laziness | Lazy (executes upon subscription) | Eager (executes immediately) |
Example of Observable:
import { Observable } from 'rxjs';
const myObservable = new Observable(subscriber => {
subscriber.next(1);
subscriber.next(2);
setTimeout(() => {
subscriber.next(3);
subscriber.complete();
}, 1000);
});
myObservable.subscribe({
next: value => console.log('Observable value:', value),
error: err => console.error('Observable error:', err),
complete: () => console.log('Observable complete'),
});
Example of Promise:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise resolved');
// reject('Promise rejected');
}, 1000);
});
myPromise
.then(value => console.log('Promise value:', value))
.catch(error => console.error('Promise error:', error));