DEV Community

Cover image for Hot vs Cold Observables: Uma Explicação Detalhada
Levy Henrique Alves Nunes
Levy Henrique Alves Nunes

Posted on

Hot vs Cold Observables: Uma Explicação Detalhada

Hot vs Cold Observables: Uma Explicação Detalhada

Os Observables, provenientes da programação reativa, são um conceito fundamental no mundo da programação assíncrona. Com o crescente uso de bibliotecas como o RxJS no desenvolvimento web, entender a diferença entre Observables "quentes" e "frios" é crucial. Neste post, vamos explorar as diferenças entre Hot e Cold Observables e ver como e quando usá-los.

1. O que são Observables?

Antes de entrar na diferença entre Hot e Cold, vamos entender o que são Observables. Em termos simples, um Observable é um produtor de múltiplos valores que podem ser observados. Em comparação, uma Promise é uma produtora de um único valor. Os Observables podem emitir zero, um ou muitos valores ao longo do tempo.

2. Cold Observables

Um Observable "frio" é aquele que cria e inicia a produção de dados quando é subscrito. Portanto, os dados são "produzidos" por pedido. Isso significa que para cada novo observador que se inscreve, a produção de dados começa do início.

Características principais:

  • Uma nova instância de produção de dados é criada para cada subscrição.
  • Os valores emitidos podem ser diferentes para cada observador.
  • Eles são comparáveis a funções: cada vez que você chama uma função, ela executa de novo com novas variáveis locais.

Exemplo:

Imagine que você tenha um Observable que faça um pedido HTTP. Para cada nova subscrição, um novo pedido HTTP seria feito.

3. Hot Observables

Um Observable "quente" é aquele que começa a produzir dados independentemente de ter qualquer subscrição. Assim que um observador se inscreve, ele recebe os dados a partir do ponto atual e não desde o início da produção de dados.

Características principais:

  • Os dados são produzidos independentemente das subscrições.
  • Todos os observadores compartilham a mesma instância de produção de dados.
  • Eles são comparáveis a eventos: vários ouvintes podem ouvir o mesmo evento ao mesmo tempo.

Exemplo:

Um exemplo comum de um Observable quente seria um evento de clique de mouse. O evento acontece independentemente de alguém estar ouvindo, e se dois observadores estiverem ouvindo, ambos verão o mesmo evento de clique.

4. Como transformar um Cold Observable em Hot?

Há várias maneiras de transformar um Observable frio em quente, e uma delas é usando operadores como share no RxJS. Ao compartilhar uma subscrição entre múltiplos observadores, você pode fazer um Observable frio agir como um quente.

5. Quando usar cada tipo?

  • Cold Observables: São úteis quando você deseja ter uma nova instância de produção de dados para cada consumidor. Isso é comum em cenários onde os dados podem mudar entre os pedidos, como solicitações HTTP.
  • Hot Observables: São ideais quando você tem uma única fonte de dados que vários observadores querem compartilhar, como eventos de usuário ou um WebSocket.

Conclusão

A diferença entre Hot e Cold Observables pode parecer sutil, mas é fundamental para o comportamento da sua aplicação. Saber quando e como usar cada tipo pode fazer a diferença entre uma aplicação eficiente e uma que está constantemente repetindo trabalho desnecessário. Ao trabalhar com programação reativa, invista um tempo para compreender estes conceitos, pois eles são a espinha dorsal de muitas interações assíncronas modernas.

Top comments (0)