Tengo la siguiente suscripción en una aplicación angular:

  private _sub: Subscription;

En la inicialización, me suscribo a una función get de firebase:

this._sub = this.service.get('database1').subscribe(
   data => {
      this.ListOfData = data;
   }
);

Pero dependiendo de la entrada del usuario, cambio database1 a otras colecciones, o uso un método diferente en lugar de get().

Cuando anule _sub, ¿la transmisión anterior se cancelará automáticamente o tendré que hacerlo manualmente antes de anular?

4
paja 11 may. 2021 a las 02:36

2 respuestas

La mejor respuesta

Respuesta corta: No, no lo hace ... Compartiré los detalles sobre por qué

Siempre que se llama a .subscribe(), se crea una nueva instancia de Subscription que contiene recursos que escuchan la ejecución del Observable. Si llama a .subscribe() y no llama a .unsubscribe(), su Suscripción aún está utilizando recursos. En algunos casos (dependiendo de la lógica asociada al Observable / Subject) puede resultar en un comportamiento inesperado en su aplicación y puede afectar el rendimiento. Es por eso que la mejor práctica es llamar a .unsubscribe() en su Subscription cuando haya terminado.

También hay funciones llamadas operadores RxJS que pueden ayudarlo a administrar sus suscripciones cancelando suscripciones automáticamente según sobre ciertos criterios.

5
Drew Thompson 11 may. 2021 a las 00:53

No, tienes que darte de baja. A veces permanecen como células durmientes para dañar el rendimiento de su aplicación. La mejor práctica es darse de baja.

-1
Kumarjit Chakraborty 10 may. 2021 a las 23:39