Comprensione degli Operatori
Gli operatori RxJS sono un insieme di funzioni per trasformare, comporre e controllare i flussi di dati Observable.
Gli operatori vengono solitamente utilizzati in combinazione, ed è qui che entra in gioco la "pipeline".
In RxJS, gli operatori sono classificati nelle seguenti categorie.
Elenco delle Categorie
- Operatori di Trasformazione
- Operatori di Filtraggio
- Operatori di Combinazione
- Operatori di Utility
- Operatori Condizionali
- Operatori di Gestione Errori
- Operatori di Multicasting
Ogni categoria contiene numerosi operatori utili. Per i dettagli, consultare ciascuna categoria.
Tabella Riepilogativa degli Operatori
Per una spiegazione dettagliata di ciascun operatore, cliccare sul link corrispondente.
| Categoria | Operator | Descrizione |
|---|---|---|
| Trasformazione | map | Trasforma ogni valore |
| scan | Accumula valori ed emette anche risultati intermedi | |
| reduce | Accumula tutti i valori ed emette solo il risultato finale | |
| pairwise | Elabora due valori consecutivi come coppia | |
| groupBy | Raggruppa i flussi per chiave | |
| mergeMap | Esegue elaborazioni asincrone in parallelo | |
| switchMap | Esegue solo l'elaborazione asincrona più recente (annulla quelle precedenti) | |
| concatMap | Esegue elaborazioni asincrone in sequenza | |
| exhaustMap | Ignora nuove elaborazioni mentre una è in corso | |
| expand | Espande i risultati ricorsivamente | |
| buffer | Raggruppa i valori in un array ed emette | |
| bufferTime | Raggruppa ed emette i valori a intervalli di tempo specificati | |
| bufferCount | Raggruppa ed emette i valori per numero specificato | |
| bufferWhen | Buffering con controllo dinamico della condizione di fine | |
| bufferToggle | Buffering con controllo indipendente di inizio e fine | |
| Filtraggio | filter | Lascia passare solo i valori che soddisfano la condizione |
| take | Ottiene solo i primi N valori | |
| takeLast | Ottiene gli ultimi N valori | |
| takeWhile | Ottiene i valori finché la condizione è soddisfatta | |
| skip | Salta i primi N valori | |
| skipLast | Salta gli ultimi N valori | |
| skipWhile | Salta i valori finché la condizione è soddisfatta | |
| skipUntil | Salta i valori fino a quando un altro Observable emette | |
| first | Ottiene il primo valore o il primo valore che soddisfa la condizione | |
| last | Ottiene l'ultimo valore o l'ultimo valore che soddisfa la condizione | |
| elementAt | Ottiene il valore all'indice specificato | |
| find | Trova il primo valore che soddisfa la condizione | |
| findIndex | Ottiene l'indice del primo valore che soddisfa la condizione | |
| debounceTime | Emette l'ultimo valore se non ci sono input per il tempo specificato | |
| throttleTime | Lascia passare il primo valore e ignora i nuovi valori per il tempo specificato | |
| auditTime | Emette l'ultimo valore dopo il tempo specificato | |
| audit | Emette l'ultimo valore controllando il periodo con Observable personalizzato | |
| sampleTime | Campiona il valore più recente a intervalli di tempo specificati | |
| ignoreElements | Ignora tutti i valori e lascia passare solo completamento/errore | |
| distinct | Rimuove tutti i valori duplicati (emette solo valori unici) | |
| distinctUntilChanged | Rimuove i valori duplicati consecutivi | |
| distinctUntilKeyChanged | Rileva solo le modifiche di una proprietà specifica dell'oggetto | |
| Combinazione (Pipeable) | concatWith | Combina altri Observable in sequenza dopo il completamento |
| mergeWith | Combina più Observable simultaneamente | |
| combineLatestWith | Combina i valori più recenti di ciascun Observable | |
| zipWith | Accoppia i valori in ordine corrispondente | |
| raceWith | Adotta solo l'Observable che emette per primo | |
| withLatestFrom | Aggiunge gli ultimi valori di altri al flusso principale | |
| mergeAll | Appiattisce Higher-order Observable in parallelo | |
| concatAll | Appiattisce Higher-order Observable in sequenza | |
| switchAll | Passa all'Higher-order Observable più recente | |
| exhaustAll | Ignora nuovi Higher-order Observable mentre uno è in corso | |
| combineLatestAll | Combina i valori più recenti di tutti gli Observable interni | |
| zipAll | Accoppia i valori corrispondenti di ciascun Observable interno | |
| Utility | tap | Esegue effetti collaterali (come output di log) |
| finalize | Esegue post-elaborazione al completamento o in caso di errore | |
| delay | Ritarda tutti i valori per il tempo specificato | |
| delayWhen | Ritarda dinamicamente ciascun valore con un altro Observable | |
| timeout | Emette un errore se non arrivano valori entro il tempo specificato | |
| takeUntil | Ottiene i valori fino a quando un altro Observable emette un valore | |
| retry | Riprova fino al numero specificato di volte in caso di errore | |
| repeat | Ripete il numero specificato di volte dopo il completamento | |
| startWith | Aggiunge un valore iniziale all'inizio del flusso | |
| toArray | Raggruppa tutti i valori in un array ed emette | |
| materialize | Converte le notifiche in oggetti Notification | |
| dematerialize | Riconverte gli oggetti Notification in notifiche normali | |
| observeOn | Controlla il timing di emissione dei valori con uno scheduler | |
| subscribeOn | Controlla il timing di inizio sottoscrizione con uno scheduler | |
| timestamp | Aggiunge un timestamp a ciascun valore | |
| Condizionale | defaultIfEmpty | Emette un valore predefinito se non ci sono valori |
| every | Determina se tutti i valori soddisfano la condizione | |
| isEmpty | Determina se non è stato emesso alcun valore | |
| Gestione Errori | catchError | Cattura l'errore ed esegue l'elaborazione di fallback |
| retry | Riprova fino al numero specificato di volte in caso di errore | |
| retryWhen | Riprova con condizioni personalizzate | |
| Multicasting | share | Condivide l'Observable tra più sottoscrittori |
| shareReplay | Memorizza gli ultimi N valori e li riproduce per nuovi sottoscrittori |