Sobes.tech
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));