Middle
Mik a hasonlóságok és különbségek az Observable és Promise között?
sobes.tech MI
Válasz az MI-től
Observable egy adatfolyamot képvisel, amely képes idővel több értéket kibocsátani. Reaktív és támogatja az előfizetés megszakítását. A Promise mindig csak egyszer oldódik meg vagy utasítódik el, és egyszer használható. Az Observable támogatja az adatok átalakítására szolgáló operátorokat, a Promise nem.
| Jellemző | Observable | Promise |
|---|---|---|
| Értékek száma | Több értéket is kibocsáthat | Mindig egy érték (resolve/reject) |
| Megszakítás | Támogatja az előfizetés megszakítását | Nem támogatja |
| Reaktivitás | Reaktív | Nem |
| Operátorok | Támogatja az operátorokat (map, filter, stb.) | Nem |
| Lusta mód | Lusta (előfizetéskor fut) | Türelmetlen (azonnal fut) |
Observable példa:
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 érték:', value),
error: err => console.error('Observable hiba:', err),
complete: () => console.log('Observable befejeződött'),
});
Promise példa:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise megoldva');
// reject('Promise elutasítva');
}, 1000);
});
myPromise
.then(value => console.log('Promise érték:', value))
.catch(error => console.error('Promise hiba:', error));