2
respostas

[Dúvida] Não é necessário se desinscrever do HttpClient no ngOnDestroy()

"Não é o caso da nossa aplicação, mas se não estivéssemos usando o armazenamento local, e sim o recurso de uma API, esse seria o momento perfeito para usarmos o OnDestroy para fazermos o cancelamento de inscrição dessa API"

É relativo, quando se usa o subscrible do HttpClient não é necessário chamar o método unsubscribe() no ngOnDestroy(), pois o próprio HttpClient cuida disso.

Link da explição: https://www.linkedin.com/posts/fabiomirandasilva_%C3%A9-preciso-se-desinscrever-em-requisi%C3%A7%C3%B5es-activity-7036763805669838848-ITAe?utm_source=share&utm_medium=member_desktop

2 respostas

E aí Wellysson, tudo bom?

Realmente, é relativo.

Existem algumas situações que podem complicar o cenário e é melhor garantir o unsubscribe.

Por exemplo, coisas como lentidão na rede ou implementações do HttpInterceptor podem gerar alguns edge cases que geram vazamento de memória.

De qualquer forma, não existe um consenso entre as pessoas que desenvolvem com o Angular.

Tem duas fontes que podem te ajudar a entender esse tema:

Tem também esse podcast em inglês onde Ben Lesh, Tracy Lee, e Jay Phelps falam sobre isso (mais ou menos em 65 minutos).

Uma outra estratégia que pode ajudar quando você for usar os dados do observable dentro do template é usar o AsyncPipe:

<item *ngFor="let item of fonteDos | async"></item>

Abraço.

Obrigado por compartilhar essa informação! De fato, ao usar o HttpClient do Angular, não é necessário se preocupar com o cancelamento de inscrição no ngOnDestroy, pois o próprio HttpClient já trata isso automaticamente, conforme a documentação do Angular.

No entanto, é sempre importante lembrar que isso nem sempre é o caso quando se trabalha com outras bibliotecas ou serviços que podem exigir o cancelamento manual de inscrições para evitar vazamentos de memória ou comportamentos indesejados.