Middle
Aké sú podobnosti a rozdiely medzi Observable a Promise?
sobes.tech AI
Odpoveď od AI
Observable predstavuje tok dát, ktorý je schopný vysielať viacero hodnôt v čase. Je reaktívny a podporuje zrušenie odberu. Promise je vždy vyriešené alebo odmietnuté iba raz a je jednorazové. Observable podporuje operátory na transformáciu dát, Promise nie.
| Charakteristika | Observable | Promise |
|---|---|---|
| Počet hodnôt | Môže vysielať viacero hodnôt | Vždy jedna hodnota (resolve/reject) |
| Zrušenie | Podporuje zrušenie odberu | Nepodporuje zrušenie |
| Reaktivita | Reaktívny | Nie |
| Operátory | Podporuje operátory (map, filter, atď.) | Nie |
| Lenivosť | Lenivý (vykonáva sa pri odberu) | Chytrý (vykonáva sa okamžite) |
Prí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 ukončený'),
});
Príklad Promise:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise vyriešená');
// reject('Promise zamietnutá');
}, 1000);
});
myPromise
.then(value => console.log('Hodnota Promise:', value))
.catch(error => console.error('Chyba Promise:', error));