Sobes.tech
Middle

Quelles sont les similitudes et différences entre Observable et Promise?

sobes.tech IA

Réponse de l'IA

Observable représente un flux de données capable d’émettre plusieurs valeurs au fil du temps. Il est réactif et supporte l’annulation de l’abonnement. Promise est toujours résolue ou rejetée une seule fois et est à usage unique. Observable supporte des opérateurs pour transformer les données, pas Promise.

Caractéristique Observable Promise
Nombre de valeurs Peut émettre plusieurs valeurs Toujours une valeur (resolve/reject)
Annulation Supporte l’annulation de l’abonnement Ne supporte pas l’annulation
Réactivité Réactif Non
Opérateurs Supporte des opérateurs (map, filter, etc.) Non
Lazy Lent (s’exécute lors de l’abonnement) Immédiat (s’exécute immédiatement)

Exemple d’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('Valeur Observable:', value),
  error: err => console.error('Erreur Observable:', err),
  complete: () => console.log('Observable terminé'),
});

Exemple de Promise:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise résolue');
    // reject('Promise rejetée');
  }, 1000);
});

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