Skip to content
On this page

Quelle est la différence entre un observable froid et chaud ?

La différence entre un observable froid et chaud en RxJS est que les observables froids produisent des valeurs indépendamment de l'existence de souscriptions, tandis que les observables chauds ne produisent des valeurs que lorsqu'il y a des souscriptions actives. Cela signifie que les observables froids recommencent à produire des valeurs à partir du début pour chaque nouvelle souscription, tandis que les observables chauds continuent à produire des valeurs à partir du moment où la première souscription est active.

En d'autres termes, les observables froids sont comme des enregistrements vidéo que vous pouvez rejouer à volonté, tandis que les observables chauds sont comme une retransmission en direct d'un événement qui se produit en temps réel. Cela peut avoir des conséquences importantes sur la façon dont les valeurs sont produites et observées dans un programme.

Exemples

js
// observable froid
const coldObservable = new Observable(observer => {
  observer.next(1);
  observer.next(2);
  observer.next(3);
  observer.complete();
});

// observable chaud
const hotObservable = new Subject();
hotObservable.next(1);
hotObservable.next(2);
hotObservable.next(3);
hotObservable.complete();

Dans ces exemples, l'observable froid produira les valeurs 1, 2 et 3 chaque fois qu'il y aura une souscription, tandis que l'observable chaud ne produira ces valeurs que lorsqu'il y aura une souscription active. Ensuite, vous pouvez souscrire à ces observables comme ceci :

js
// souscription à un observable froid
coldObservable.subscribe(value => console.log(value), // affichera 1, 2 et 3);

// souscription à un observable chaud
hotObservable.subscribe(value => console.log(value), // ne produira pas de valeurs car il n'y a pas eu de souscription active lorsque les valeurs ont été produites
);