Sobes.tech
Middle

Quali sono le somiglianze e le differenze tra Observable e Promise?

sobes.tech AI

Risposta dell'AI

Observable rappresenta un flusso di dati in grado di emettere molteplici valori nel tempo. È reattivo e supporta l'annullamento dell'iscrizione. Promise viene sempre risolta o rifiutata una sola volta ed è monouso. Observable supporta operatori per la trasformazione dei dati, Promise no.

Caratteristica Observable Promise
Numero di valori Può emettere molteplici valori Sempre un valore (resolve/reject)
Annullamento Supporta l'annullamento dell'iscrizione Non supporta l'annullamento
Reattività Reattivo No
Operatori Supporta operatori (map, filter, etc.) No
Pigrizia Pigrizia (si esegue all'iscrizione) Esecuzione immediata

Esempio di 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('Valore Observable:', value),
  error: err => console.error('Errore Observable:', err),
  complete: () => console.log('Observable completato'),
});

Esempio di Promise:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise risolta');
    // reject('Promise rifiutata');
  }, 1000);
});

myPromise
  .then(value => console.log('Valore Promise:', value))
  .catch(error => console.error('Errore Promise:', error));