Как изменить параметры оператора rxjava / rxscala (.debounce) после инициализации - PullRequest
1 голос
/ 25 апреля 2019

Я использую оператор .debounce в rxjava / rxscala для захвата некоторых событий, которые происходят даже в течение определенного периода времени друг с другом, но хотел бы сделать данный период времени управляемым.Период времени .debounce используется в качестве аргументов.

В идеале, я хотел бы иметь возможность передать оператору .debounce наблюдаемое, которое использует последнее значение, чтобы определить период времени, с помощью которого будет выполняться отладка.Что-то вроде .debounce (timePeriodController, TimeUnit.Seconds).

Я видел, что .debounce может принять DebounceSelector, и думаю, что это может быть решением.

Я также виделчто .flatMap может использоваться довольно сложными способами в таких обстоятельствах.

Редактировать: Похоже, что в RxJS .debounce может приниматьтио durationSelector, но в настоящее время это невозможно в RxJava.Интересно, может быть, есть обходной путь?

Буду признателен за любую помощь.Ура!Адам

1 Ответ

0 голосов
/ 26 апреля 2019

Когда мне нужно изменить параметры для оператора таймера, такого как debounce, я использую оператор switchMap().

BehaviorSubject<Long> timer = BehaviorSubject.create(100);
...
timer
  .distinctUntilChanged()
  .switchMap( timerValue ->
    originalSource
      .debounce(timerValue))
  .subscribe(...);

Всякий раз, когда изменяется значение таймера, интервал отладки будет меняться.

...