I use the following code for timer:
export class TimerService {
private ticks: number = 0;
private seconds: number = 0;
private timer;
constructor(s
The subscribe
method returns a Subscription
object, which you can later use to stop listening the stream contained by the observable to which you subscribed.
import { ISubscription } from 'rxjs/Subscription':
import { TimerObservable } from 'rxjs/observable/TimerObservable';
export class TimerService {
private ticks = 0;
private timer$: TimerObservable;
private $timer : ISubscription;
constructor(private seconds = 0) {
this.timer$ = TimerObservable.create(2000, 1000);//or you can use the constructor method
this.$timer = this.timer.subscribe(t => {
this.ticks = t;
this.disactivate();
});
}
private disactivate() {
if (this.ticks >= this.seconds) {
this.$timer.unsubscribe();
}
}
}
Its important to notice that unsubscribe
exist in rxjs (version 5 and up), before that, in rx (version lower than 5, a different package) the method was called dispose
So after some PUNISHING research I've added my own npm library for this problem.
Improves previous answer by NOT having to add any extra convolution variables and ease of use.
The best way is to unsubscribe when instance is destroyed.
ngOnDestroy() {
this.sub.unsubscribe();
}