Después de tanto batallar pudimos hallar el resultado de esta obstáculo que muchos lectores de nuestro sitio han tenido. Si quieres aportar algún detalle no dejes de compartir tu comentario.
Solución:
Hay básicamente dos formas:
- llamar
unsubscribe()
en el objeto Suscripción devuelto por elsubscribe()
llamar . - usar un operador
Para sólo unsubscribe
podrías hacerlo así.
ngOnInit()
this.subscription = timer(100, 100).subscribe(t =>
this.setFormData();
);
private setFormData()
...
this.subscription.unsubscribe();
O puede usar Asunto para completar el Observable a través de takeUntil()
operador:
this.subject = new Subject();
ngOnInit()
timer(100, 100).pipe(
takeUntil(this.subject),
).subscribe(t => this.setFormData());
private setFormData()
...
this.subject.next();
Echa un vistazo a estos también:
- Diferencia entre .unsubscribe a .take(1)
- RxJS: takeUntil() ngOnDestroy() del componente angular
Enero de 2019: actualizado para RxJS 6
puedes usar unsubscribe
método cuando desea detener el temporizador observable como este
this.timer = Observable.timer(100, 100);
this.subscription = this.timer.subscribe(t =>
this.setFormData();
);
.............
this.subscription.unsubscribe();
Un matiz que las respuestas anteriores realmente no han cubierto es que no hay necesidad de deténgase un temporizador/intervalo observable, al menos no al interactuar con el observable o el temporizador en sí.
Me encontré aquí porque estaba configurando un observable usando un temporizador en el método de inicio de HostedService, y en el método de parada pareció como si debería detenerlo, o desechar algo seguramente? – bueno no. El temporizador observable no necesita ser detenido o desechado de esta manera, solo las suscripciones, y es por eso que…
Los temporizadores e intervalos observables son ejemplos de corrientes frías (aunque parecen comportarse como calientes). Son pasivos, no activos, no producen datos hasta que están suscritos y dejan de producir datos cuando no hay suscriptores. Por lo tanto, la eliminación de todas las suscripciones debería ser todo lo que se requiere para detener la producción de datos del temporizador.
Más información aquí… [http://introtorx.com/Content/v1.0.10621.0/14_HotAndColdObservables.html]
Puntuaciones y comentarios
Recuerda que te brindamos la opción de explicar si diste con el arreglo.