Skip to content

Opérateurs utilisés dans la multidiffusion

RxJS fournit plusieurs opérateurs dédiés à la réalisation de la « multidiffusion », où la même sortie Observable est partagée pour plusieurs abonnés.

Cette page présente brièvement les opérateurs typiques pertinents pour la multidiffusion du point de vue des opérateurs, et organise leur utilisation et les points à noter.

❗ Pour une explication structurelle du concept de multidiffusion et de l'utilisation de Subject, ainsi que des exemples de code concrets, voir Comment fonctionne la multidiffusion.

Principaux opérateurs liés à la multidiffusion

OpérateurCaractéristiquesRemarques
share()Le moyen le plus simple de multidiffusion. Équivalent en interne à publish().refCount()Suffisant pour de nombreux cas d'utilisation
shareReplay()En plus de la multidiffusion, fournit la valeur la plus récente lors du réabonnementQuand la réutilisation de l'état est nécessaire
publish() + refCount()Configuration de multidiffusion avec timing d'exécution contrôlableConfiguration classique et flexible
multicast()API de bas niveau pour passer explicitement SubjectUtile si vous voulez utiliser des Subjects personnalisés

Comparaison des modèles de multidiffusion

OpérateurCaractéristiquesCas d'utilisation
share()Multidiffusion de baseUtilisation simultanée dans plusieurs composants
shareReplay(n)Met en tampon les n dernières valeursAbonnement différé/partage d'état
publish() + refCount()Contrôle plus fin possibleQuand un contrôle avancé est nécessaire
multicast(() => new Subject())Personnalisation complèteQuand un type de Subject spécial est nécessaire

Notes sur l'utilisation de la multidiffusion

  1. Compréhension du timing : Comprenez que la valeur que vous recevez dépend du moment où l'abonnement commence
  2. Gestion du cycle de vie : En particulier lors de l'utilisation de refCount, le flux se termine quand le nombre d'abonnés atteint zéro
  3. Gestion des erreurs : Une erreur dans un Observable multidiffusé affectera tous les abonnés
  4. Gestion de la mémoire : Attention aux fuites de mémoire lors de l'utilisation de shareReplay, etc.

Publié sous licence CC-BY-4.0.