Middle
Kādi ir līdzības un atšķirības starp Observable un Promise?
sobes.tech AI
Atbilde no AI
Observable ir ir ir ir duomenų srautas, kuris gali 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));