Rx JS таймер перезапуска - PullRequest
2 голосов
/ 20 января 2020

Мне нужно создать модал неактивности в моем проекте Angular с использованием таймера от Rx JS. Поскольку я новичок в Rx JS, у меня проблемы с этим. Вот код, который у меня есть сейчас. Это работает, но проблема, которую я имею, состоит в том, чтобы перезапустить таймер после того, как пользователь нажимает. На этом этапе я могу отменить таймер с условием takeUntil, но я могу перезапустить таймер снова. Я изучал примеры и код, но все они работают с событиями нажатия кнопок «Пуск», «Стоп», «Перезапуск», и мне нужно, чтобы события происходили после выполнения takeUntil. Спасибо за любую помощь, кто-нибудь может мне помочь!


fromEvent(document, 'scroll');

this.authManager = new BehaviorSubject(AuthState.INITIAL_STATE);
this.authChange = this.authManager.asObservable();
this.authChange.pipe(
  filter((authState: AuthState) => authState === AuthState.LOGGED_IN),
  map((authState:AuthState) => timer(8000).pipe(
     takeUntil(clickEvent)
  )),
  tap(() => console.log('logged in. session timeout counting down from now'))
).switch().subscribe(() => {
  console.log('timer ended: logging out');
  this.waitingUserResponse();
});
...