Потому что каждый раз, когда вы звоните requestPassportData()
, вы создаете новую цепочку с новым Observable.timer
, которая не имеет ничего общего с предыдущими вызовами.
Очевидно, есть несколько способов решить эту проблему, но вы можетенапример, сделайте следующее:
private requestPasswordSubject$ = new Subject();
private requestPassword = this.requestPasswordSubject$
.switchMap(() => Observable.timer(0, 1000)
.switchMap(() => this.requestMethods.requestPassportData(data))
.takeWhile(() => {
return (
th.formRegister.currentForm().index == 1 ||
th.formRegister.currentForm().index == 2 ||
th.formRegister.currentForm().index == 3
);
});
)
.subscribe(response => {});
public requestPassportData(): void {
...
this.requestPasswordSubject$.next();
}
Фактическая реализация зависит от того, чего именно вы пытаетесь достичь, но, надеюсь, вы поймете, что отличается от того, что у вас есть сейчас.