Middle
Kokios yra panašumai ir skirtumai tarp Observable ir Promise?
sobes.tech AI
Atsakymas iš AI
Observable yra duomenų srautas, galintis skleisti daugybę reikšmių laikui bėgant. Jis yra reaktyvus ir palaiko prenumeratos atšaukimą. Promise visada išsprendžiamas arba atmetamas tik kartą ir yra vienkartinis. Observable palaiko operatorius duomenų transformavimui, Promise – ne.
| Savybė | Observable | Promise |
|---|---|---|
| Reikšmių skaičius | Gali skleisti daugybę reikšmių | Visada viena reikšmė (sprendimas/atmetimas) |
| Atšaukimas | Palaiko prenumeratos atšaukimą | Nepalaiko atšaukimo |
| Reaktyvumas | Reaktyvus | Ne |
| Operatoriai | Palaiko operatorius (map, filter ir kt.) | Ne |
| Vėlyvumas | Vėlyvas (vykdomas prenumeratos metu) | Skubus (vykdomas iš karto) |
Pavyzdys su Observable:
import { Observable } from 'rxjs';
const manoObservable = new Observable(subscriber => {
subscriber.next(1);
subscriber.next(2);
setTimeout(() => {
subscriber.next(3);
subscriber.complete();
}, 1000);
});
manoObservable.subscribe({
next: value => console.log('Observable reikšmė:', value),
error: err => console.error('Observable klaida:', err),
complete: () => console.log('Observable pabaiga'),
});
Pavyzdys su Promise:
const manoPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise išspręsta');
// reject('Promise atmesta');
}, 1000);
});
manoPromise
.then(value => console.log('Promise reikšmė:', value))
.catch(error => console.error('Promise klaida:', error));