Skip to content

¿Qué es un Stream?

Definición de Stream

Un "stream" se refiere a un flujo de datos que ocurre secuencialmente a lo largo del tiempo. Puede verse como una colección de datos que aparecen uno tras otro en cierto orden.

Ejemplos de Streams Típicos en Programación Tradicional

  • Datos de lecturas de archivos (ej., ReadableStream en Node.js)
  • Comunicaciones de red (ej., respuestas HTTP)
  • Entrada de usuario y eventos (movimientos del ratón, clics, entradas de teclado)

Streams en RxJS

RxJS usa Observable para manejar tales datos que ocurren a lo largo del tiempo como un stream. Observable es un mecanismo para abstraer datos asincrónicos, datos sincrónicos, eventos y procesamiento basado en tiempo como "streams".

Ventajas de Observable

  • Puede describirse de manera type-safe (afinidad con TypeScript)
  • Expresión declarativa del flujo de datos
  • Cadena de operaciones mediante pipe() es posible
  • Puede suscribirse explícitamente mediante subscribe()
  • Cancelable mediante unsubscribe()

Comparación con Streams Convencionales

CaracterísticaStreams ConvencionalesRxJS Observable
ObjetivoTiende a limitarse a archivos/redes, etc.Asíncrono/evento/cambio de estado arbitrario
Manejo de eventosManejado por event listeners caso por casoStreaming con fromEvent
CancelarDiferentes métodosGestión unificada con unsubscribe()
Composición/ConversiónImplementación separada con código procedimentalDescripción concisa con operadores (map, filter, etc.)

Relación con Observer y Subscription

  • Observable: Fuente de datos (fuente del stream)
  • Observer: Receptor de datos (con next, error, complete)
  • Subscription: Control handle para suscripción (suscribir, desuscribir, gestión de recursos)

Observable y Observer se conectan a través de callbacks y se controlan mediante Subscription.

Diagrama de Relación Básica

Resumen

El concepto de "streams", que está en el núcleo de RxJS, es un arma poderosa cuando se trata de procesamiento asíncrono. Observable te permite manejar diversas fuentes de datos de manera unificada y describir flujos de datos de manera declarativa y flexible.

Relación con el Procesamiento de Eventos

En RxJS, los eventos DOM también pueden manejarse como streams usando fromEvent. El concepto de stream se vuelve más claro al comparar las diferencias con los event listeners convencionales.

TIP

Ver Eventos de Streaming para una comparación del procesamiento de eventos tradicional y RxJS con código real.

Publicado bajo licencia CC-BY-4.0.