Правильный способ создания наблюдаемого с осмысленным каналом, но бессмысленным содержанием - PullRequest
0 голосов
/ 04 февраля 2019

Я создаю алгоритм для отображения предупреждения / модального режима, который предлагает пользователям предпринять действия или выйти из приложения, когда он / она неактивен в течение 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(), но казалось, что внутренняя наблюдаемая не сработает.

Есть предложения, как это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...