Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

137
Visualizações
¿Debería estar completando mi tema después de seguir en angular ngOnDestroy?

Usualmente uso takeUntil(this.destroySub) cuando necesito suscribirme manualmente a una transmisión en mis componentes. ¿Importa (para el tema (recolección de basura o lo que sea), ya que el siguiente es suficiente para completar la transmisión) si completo el tema o no en ngOnDestroy ?

 @Component({...}) class MyComponent { private destroySub = new Subject<void>(); constructor() { of('some stream').pipe( takeUntil(this.destroySub) ).subscribe() } ngOnDestroy():void { this.destroySub.next(); this.destroySub.complete(); } }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Respuesta corta.

takeUntil(this.destroySub) es cómo está completando todos los demás observables en su componente, pero esto no completa this.destroySub en sí.

Sí, las asignaturas no tienen una duración limitada, por lo que debe completarlas cuando ya no las necesite.

La respuesta más larga

Al igual que cualquier otro objeto, el GC aún recopilará un Subject una vez que no haya más punteros hacia él. El problema con esta forma de pensar es que es muy fácil filtrar accidentalmente una referencia a este tema. Debido a que es una biblioteca asíncrona, las referencias pueden estar tanto en la pila actual como en el bucle de eventos.

Está trabajando dentro de un marco que puede intentar optimizar sus componentes, por lo que no hay garantía de que la referencia a su componente se elimine dentro de Angular después de llamar a ngOnDestroy. También está pasando referencias a la biblioteca RxJS cada vez que usa takeUntil(this.destroySub) . RxJS actúa como proxy y administra las emisiones por usted en muchos casos, por lo que es posible que se sorprenda con una línea de código relativamente mundana que causa una pérdida de memoria.

Completar un observable limpia toda la instrumentación interna que guarda RxJS para cualquier observable dado y deja tu conciencia clara en ese sentido.

Entonces, sí, aunque (si tiene cuidado y está bien informado) el GC puede limpiar un observable incompleto, no contaría con eso. Si su observable no es finito, entonces hágalo finito de alguna manera. this.destroySub.complete(); Eso funciona para ti.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda