public function(id: number) {
this.periodicCheckTimer = Observable.timer(10000, 5000).subscribe(
() => {
let model = this.find(id);
if
I didn't test it out, but here's an alternative to your proposal with the stop after 5mn :
function (id: number) {
// emit a value after 5mn
const stopTimer$ = Observable.timer(5 * 60 * 1000);
Observable
// after 10s, tick every 5s
.timer(10000, 5000)
// stop this observable chain if stopTimer$ emits a value
.takeUntil(stopTimer$)
// select the model
.map(_ => this.find(id))
// do not go further unless the model has a property 'isActivated' truthy
.filter(model => model['isActivated'])
// only take one value so we don't need to manually unsubscribe
.first()
.subscribe();
}