Você não precisa usar só Observables no Angular

Nós podemos usar ações assíncronas de outras duas diferentes formas, são elas Observables e Promises.

Vamos ver quando usar Promises e Observables, e tirar um pouco essa ideia de sempre usar Observables para tudo.

Observables

Vamos começar falando um pouco de Observables, em nosso querido Angular usamos o RxJS e ele vem com um grande set de features para usar Observables de maneira muito interessante.

Uma grande diferença do Observables para as Promises é que Observables pode tanto trabalhar como assíncrono como síncrono. Já o Promises somente assíncrono.

Observables quando é iniciado, vem completamente vazio até surgir um subscribe e faze-lo. Nós também podemos cancelar o subscription ou quando ocorre um erro ele automaticamente anula a inscrição.

Irei pontuar alguns comportamentos do Observables:

  • Múltiplos valores;
  • Pode ser cancelado;
  • Ótimo para informações em real time;
  • Pode ser inscrito em vários locais;
  • Erros automaticamente anula as inscrições;
  • Algo somente ocorre quando é inscrito algo;
  • Tem operadores para trabalhar com dados (map, forEach, filter, reduce, retry, e retryWhen);
  • Pode ser tanto assíncrono como síncrono.

Promises

Promise é ideal para trabalhar com ações assíncronas. Porém ele não trabalha com subscribers como o Observable.

Diferente do Observable ele não pode ser cancelado. Somente lida com valores únicos ao invés de um fluxo de dados e somente é aceito ou rejeitado.

Vamos pontuar o comportamento da Promise:

  • Valores únicos;
  • Não pode ser cancelada;
  • Ótimo com informações únicas;
  • Não pode ser reusada ou distribuída;
  • Promises são iniciadas assim que são criadas;
  • Sempre assíncrona.

Quando usar Promise ou Observable?

Agora que sabemos o comportamento de ambas, a grande diferença entre Observable e Promise é como cada uma lida com os valores.

Usando Observable

Ele é ideal para quando a informação vai mudar durante o ciclo de vida dela.

Algumas situações onde podemos usar elas:

  • Em situações como chats, notificações, legenda em vídeos;
  • Modos dark e light, menus collapsable, ações de usuários como essas.

Essas são situações onde o valor é alterado e então o subscription é atualizado.

Usando Promise

Quando estamos lidando com valores únicos, aí sim as Promises brilham.

Algumas situações onde podemos usar elas:

  • Forms submission: Criando, editando, deletando valores onde não é constantemente alterado. Os dados do formulário são enviados para uma API;
  • Requisição da API para dados onde não é alterado em forma de real time: uma quantidade grande de dados para se mostrar na tela.

São todas situações onde os dados não são alterados toda hora. Os dados são coletados da API, mostrado em tela e pronto. Simples assim.

Por qual motivo as pessoas usam o Observable para tudo?

Pois uma grande parte dos dev esquecem de fazer o unsubscribe (subscrição) do Observable e com isso usamos ele de forma errada. Devemos nos atentar e usar cada coisa em seu devido lugar, assim vamos usar realmente todo o poder do browser.

Então vamos usar o Observable quando os valores são alterados com frequência, vamos pensar que ele sempre está lá esperando receber alguma mudança, e as Promises para quando o valor é mantido.

Eu particularmente utilizo Observable no angular pois ele da super poderes a ele, só quando existe necessidade de usar as Promises ai sim apelo para elas.

Gostou? Quer aprender mais de angular? Então veja aqui nosso Curso de Angular.

Share This