Operatori Utilizzati nel Multicasting
RxJS fornisce diversi operatori dedicati per realizzare il "multicasting", condividendo lo stesso output Observable con più subscriber.
Questa pagina introduce brevemente gli operatori tipici relativi al multicasting dalla prospettiva degli operatori, e organizza il loro utilizzo e i punti a cui prestare attenzione.
❗ Per spiegazioni concettuali del multicasting, spiegazioni strutturali usando Subject ed esempi di codice concreti, vedi Meccanismo di Multicasting.
Principali Operatori Relativi al Multicasting
| Operatore | Caratteristiche | Note |
|---|---|---|
| share() | Il metodo multicast più semplice. Internamente equivalente a publish().refCount() | Sufficiente per molti casi d'uso |
| shareReplay() | Oltre al multicasting, fornisce valori recenti alla risottoscrizione | Quando è richiesto il riutilizzo dello stato |
publish() + refCount() | Configurazione multicast con timing di esecuzione controllabile | Configurazione classica e flessibile |
multicast() | API di basso livello che passa esplicitamente Subject | Utile quando vuoi usare un Subject personalizzato |
Confronto dei Pattern di Multicasting
| Operatore | Caratteristiche | Caso d'Uso |
|---|---|---|
| share() | Multicast base | Uso simultaneo tra più componenti |
| shareReplay(n) | Buffer degli ultimi n valori | Sottoscrizione tardiva/condivisione stato |
publish() + refCount() | Controllo più granulare possibile | Quando serve controllo avanzato |
multicast(() => new Subject()) | Personalizzazione completa | Quando servono tipi di Subject speciali |
Precauzioni nell'Uso del Multicasting
- Comprendere il timing: Capire che il valore ricevuto dipende da quando inizia la sottoscrizione
- Gestione del lifecycle: Specialmente usando
refCount, lo stream viene completato quando il numero di subscriber raggiunge zero - Gestione errori: Se si verifica un errore in un Observable multicast, influenzerà tutti i subscriber
- Gestione memoria: Prestare attenzione ai memory leak quando si usa
shareReplay, ecc.