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.

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (0)

Cloudinary image

Optimize, customize, deliver, manage and analyze your images.

Remove background in all your web images at the same time, use outpainting to expand images with matching content, remove objects via open-set object detection and fill, recolor, crop, resize... Discover these and hundreds more ways to manage your web images and videos on a scale.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay