Skip to content

O que é um Stream?

Definição de Stream

Um "stream" refere-se a um fluxo de dados que ocorre sequencialmente ao longo do tempo. Ele pode ser visto como uma coleção de dados que aparecem um após o outro em uma determinada ordem.

Exemplos de Streams Típicos na Programação Tradicional

  • Dados de leituras de arquivos (por exemplo, ReadableStream no Node.js)
  • Comunicações de rede (por exemplo, respostas HTTP)
  • Entrada e eventos do usuário (movimentos do mouse, cliques, entradas do teclado)

Streams no RxJS

O RxJS usa Observable para tratar esses dados que ocorrem ao longo do tempo como um stream. Observable é um mecanismo para abstrair dados assíncronos, dados síncronos, eventos e processamento baseado em tempo como "streams".

Vantagens do Observable

  • Pode ser descrito de maneira segura para tipos (afinidade com TypeScript)
  • Expressão declarativa do fluxo de dados
  • Encadeamento de operações com pipe() é possível
  • Pode se inscrever explicitamente com subscribe()
  • Cancelável com unsubscribe()

Comparação com Streams Convencionais

CaracterísticaStreams ConvencionaisRxJS Observable
AlvoTende a ser limitado a arquivos/redes, etc.Qualquer mudança assíncrona/evento/estado
Manipulação de eventosManipulado por event listeners caso a casoStreaming com fromEvent
CancelamentoMétodos diferentesGerenciamento unificado com unsubscribe()
Composição/ConversãoImplementação separada com código proceduralDescrição concisa com operadores (map, filter, etc.)

Relacionamento com Observer & Subscription

  • Observable: Fonte de dados (origem do stream)
  • Observer: Receptor de dados (com next, error, complete)
  • Subscription: Handle de controle para subscription (subscribe, unsubscribe, gerenciamento de recursos)

Observable e Observer são conectados através de callbacks e controlados pela Subscription.

Diagrama de Relacionamento Básico

Resumo

O conceito de "streams", que está no centro do RxJS, é uma ferramenta poderosa ao lidar com processamento assíncrono. O Observable permite que você manipule várias fontes de dados de forma unificada e descreva fluxos de dados de maneira declarativa e flexível.

Relação com o Processamento de Eventos

No RxJS, eventos DOM também podem ser tratados como streams usando fromEvent. O conceito de stream fica mais claro ao comparar as diferenças com event listeners convencionais.

TIP

Consulte Streaming de Eventos para uma comparação entre o processamento de eventos tradicional e RxJS com código real.

Lançado sob a licença CC-BY-4.0.