Conteúdo
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.