Skip to content

Cos'è uno stream? ​

Definizione di stream ​

Uno "stream" si riferisce a un flusso di dati che si verifica sequenzialmente nel tempo. Può essere considerato come una raccolta di dati che appaiono uno dopo l'altro in un certo ordine.

Esempi tipici di stream nella programmazione tradizionale ​

  • Dati dalla lettura di file (es. ReadableStream in Node.js)
  • Comunicazioni di rete (es. risposte HTTP)
  • Input ed eventi dell'utente (movimenti del mouse, clic, input da tastiera)

Stream in RxJS ​

RxJS utilizza Observable per gestire i dati che si verificano nel tempo come stream. Observable è un meccanismo per astrarre tutti i dati asincroni, dati sincroni, eventi, elaborazioni basate sul tempo, ecc. come "stream".

Vantaggi degli Observable ​

  • Scrittura type-safe (compatibilità con TypeScript)
  • Espressione dichiarativa del flusso di dati
  • Concatenamento di operazioni tramite pipe()
  • Sottoscrizione esplicita con subscribe()
  • Cancellazione con unsubscribe()

Confronto con stream tradizionali ​

CaratteristicaStream tradizionaliObservable RxJS
AmbitoTende a essere limitato a file/rete, ecc.Qualsiasi async/evento/cambio di stato
Gestione eventiGestiti singolarmente con event listenerConvertiti in stream con fromEvent
CancellazioneMetodi variGestione unificata con unsubscribe()
Composizione/TrasformazioneImplementazione individuale con codice proceduraleDescrizione concisa con operatori (map, filter, ecc.)

Relazione con Observer e Subscription ​

  • Observable: Fonte dei dati (sorgente dello stream)
  • Observer: Ricevitore dei dati (ha next, error, complete)
  • Subscription: Handle di controllo della sottoscrizione (sottoscrizione, cancellazione, gestione risorse)

Observable e Observer sono collegati tramite callback e controllati da Subscription.

Diagramma delle relazioni base ​

Il concetto di "stream", che è il cuore di RxJS, è uno strumento potente per gestire l'elaborazione asincrona. Utilizzando Observable, è possibile gestire varie fonti di dati in modo unificato e descrivere i flussi di dati in modo dichiarativo e flessibile.

Relazione con l'elaborazione degli eventi ​

In RxJS, anche gli eventi DOM possono essere gestiti come stream utilizzando fromEvent. Confrontando le differenze con gli event listener tradizionali, il concetto di stream diventa più chiaro.

TIP

Per un confronto tra la gestione tradizionale degli eventi e RxJS con codice reale, vedere Streaming degli eventi.

Pubblicato sotto licenza CC-BY-4.0.