Middle
Care sunt asemănările și diferențele dintre Observable și Promise?
sobes.tech AI
Răspuns de la AI
Observable reprezintă un flux de date capabil să emită multiple valori în timp. Este reactiv și suportă anularea abonamentului. Promise se rezolvă sau se respinge întotdeauna o singură dată și este de unică folosință. Observable suportă operatori pentru transformarea datelor, Promise nu.
| Caracteristică | Observable | Promise |
|---|---|---|
| Număr de valori | Poate emite multiple valori | Întotdeauna o singură valoare (resolve/reject) |
| Anulare | Suportă anularea abonamentului | Nu suportă anulare |
| Reactivitate | Reacțiv | Nu |
| Operatori | Suportă operatori (map, filter, etc.) | Nu |
| Leneșitate | Leneș (se execută la abonare) | Însetat (se execută imediat) |
Exemplu 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('Valoarea Observable:', value),
error: err => console.error('Eroarea Observable:', err),
complete: () => console.log('Observable completat'),
});
Exemplu Promise:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise rezolvată');
// reject('Promise respinsă');
}, 1000);
});
myPromise
.then(value => console.log('Valoarea Promise:', value))
.catch(error => console.error('Eroarea Promise:', error));