Middle
Jaké jsou podobnosti a rozdíly mezi Observable a Promise?
sobes.tech AI
Odpověď od AI
Observable představuje datový tok, který je schopen emitovat více hodnot v čase. Je reaktivní a podporuje zrušení odběru. Promise je vždy vyřešeno nebo odmítnuto pouze jednou a je jednorázové. Observable podporuje operátory pro transformaci dat, Promise nikoliv.
| Charakteristika | Observable | Promise |
|---|---|---|
| Počet hodnot | Může emitovat více hodnot | Vždy jedna hodnota (resolve/reject) |
| Zrušení | Podporuje zrušení odběru | Nepodporuje zrušení |
| Reaktivita | Reaktivní | Ne |
| Operátory | Podporuje operátory (map, filter, atd.) | Ne |
| Lenivost | Lenivý (provádí se při odběru) | Hbitý (provádí se ihned) |
Příklad 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('Hodnota Observable:', value),
error: err => console.error('Chyba Observable:', err),
complete: () => console.log('Observable dokončeno'),
});
Příklad Promise:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise vyřešeno');
// reject('Promise zamítnuto');
}, 1000);
});
myPromise
.then(value => console.log('Hodnota Promise:', value))
.catch(error => console.error('Chyba Promise:', error));