Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

subscribe

21/23
Recursos

Aportes 7

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Una mejor práctica para desuscribirte de tus suscripciones, es usar el operator de rxjs takeUntil, que mantiene activa las suscripciones de la aplicación hasta que otro observable emita.
Eso sirve cuando tienes muchas suscripciones en tu componente, para evitar tener un unsuscribe por cada suscripción, además de prevenir que se te olvide agregar el unsuscribe de alguna.

Un ejemplo es el siguiente:

export class UnsubscribeComponent implements OnInit, OnDestroy {

  value1: number;
  value2: number;
  value3: number;

  subscribe1: Subscription;
  subscribe2: Subscription;
  subscribe3: Subscription;
  private ngUnsubscribe = new Subject();
  constructor() { }

  ngOnInit() {
    this.subscribe1 = interval(1000).pipe(
      takeUntil(this.ngUnsubscribe)
    ).subscribe(value => {
      this.value1 = value;
    });

    this.subscribe1 = interval(1000).pipe(
      takeUntil(this.ngUnsubscribe)
    ).subscribe(value => {
      this.value2 = value;
    });

    this.subscribe1 = interval(1000).pipe(
      takeUntil(this.ngUnsubscribe)
    ).subscribe(value => {
      this.value3 = value;
    });
  }

  ngOnDestroy() {
    this.ngUnsubscribe.next();
    this.ngUnsubscribe.complete();
  }

}

Una mejor practica para manejar las suscripciones en angular es hacer uso del metodo add() que contiene la Subscription. Este método nos permitirá guardar todas las subscripciones que sean necearías. Luego llamamos unsubscribe() y este método automáticamente cerrara todas las subscripciones.

La ventaja de realizarlo de esta forma es que podemos agrupar todas las subscripciones y no tener que crear un variable por cada subscripcion.

Ejemplo:

export class SubscribeComponent implements OnInit, OnDestroy {
  value1: number;
  value2: number;
  private readonly subscription: Subscription = new Subscription();

  constructor() { }

  ngOnInit() {
	this.subscription.add(	
   		interval(1000)
		.subscribe(value => {
      			this.value1 = value;
   	 	})
	);
	this.subscription.add(	
   		interval(1000)
		.subscribe(value => {
      			this.value2 = value;
   	 	})
	);
  }

  ngOnDestroy() {
    this.subscription.unsubscribe();
  }

}

Aqui hay un articulo que explica las diferentes formas de manejar las suscripciones
https://www.intertech.com/Blog/angular-best-practice-unsubscribing-rxjs-observables/

Otra forma es:

let subs: Subscription[] = [];

ngOnInit() {
  this.subs.push(this.service.Subject1.subscribe(() => {}));
  this.subs.push(this.service.Subject2.subscribe(() => {}));
  this.subs.push(this.service.Subject3.subscribe(() => {}));
}

ngOnDestroy() {
  subs.forEach(sub => sub.unsubscribe());
}

https://www.intertech.com/angular-best-practice-unsubscribing-rxjs-observables/

En angular se tiene http-client (es un observable), a la cual se subscribe una vez se hace la peticion, se recibe la data y luego se renderiza.

Excelente clase…
No conocía bn el concepto

Se podria tambien utilizar take para desubscribir