Multicasting
Un observable typique crée une nouvelle exécution indépendante pour chaque observateur abonné.
Lorsqu'un observateur est abonné, l'observable connecte un gestionnaire d'événements et lui fournit des valeurs.
Lorsqu'un deuxième observateur s'abonne, l'observable connecte ensuite un nouveau gestionnaire d'événements et fournit des valeurs à ce deuxième observateur dans une exécution séparée.
Parfois, au lieu de démarrer une exécution indépendante pour chaque abonné, vous souhaitez que chaque abonnement reçoive les mêmes valeurs, même si les valeurs ont déjà commencé à émettre.
Cela pourrait être le cas avec quelque chose comme un observable de clics sur l'objet de document.
La Multicasting est la pratique consistant à diffuser sur une liste de plusieurs abonnés en une seule exécution.
Avec un Multicasting observable, vous n'enregistrez pas plusieurs auditeurs sur le document, mais vous réutilisez le premier auditeur et envoyez des valeurs à chaque abonné.
Lors de la création d'un observable, vous devez déterminer comment vous souhaitez que cet observable soit utilisé et si vous souhaitez ou non Multicaster ses valeurs.
Regardons un exemple qui compte de 1 à 3, avec un délai d'une seconde après chaque nombre émis.
Notez que si vous vous abonnez deux fois, il y aura deux flux distincts, chacun émettant des valeurs toutes les secondes. Cela ressemble à quelque chose comme ça :
Changer l'observable en multicast pourrait ressembler à ceci :