Я создаю алгоритм для отображения предупреждения / модального режима, который предлагает пользователям предпринять действия или выйти из приложения, когда он / она неактивен в течение x секунд, где x меньше времени ожидания y натокен обновления.
Сколько времени рассчитывается для длительности, не имеет значения, но я решаю проблему с RxJ.
Я достиг следующего канала, который, кажется, выполняет работу:
this.countDown$
.pipe(
distinctUntilChanged(),
switchMap(exp =>
of(null).pipe(
delay(AuthService.CalculateDelayTime(exp))
)
)
)
.subscribe(AuthService.TriggerModal);
countDown$
- это Subject<number>
, которому непрерывно подается время истечения маркера обновления при выполнении аутентификации маршрута.
CalculateDelayTime
и TriggerModal
являются статическимиметоды (на данный момент, так как сам модал не был реализован; Calculate возвращает количество секунд, пока модал не должен появиться).
В целом, похоже, что я хочу, но я немного обеспокоенof(null)
.Есть ли более правильный / RxJs-стиль / элегантный способ решения этой конкретной проблемы?Мне нужно время exp для функции delay, и я также хочу сбрасывать задержку с каждым уникальным временем истечения, которое наступает (именно поэтому я использую switchMap
).Однако выполнение of(exp)
предполагает, что я фактически манипулирую exp
как частью внутренней трубы, которой я не являюсь.
Я пытался Observable.empty()
, но казалось, что внутренняя наблюдаемая не сработает.
Есть предложения, как это сделать?