Как я могу использовать один реактивный поток внутри другого реактивного потока в результате оператора if - PullRequest
0 голосов
/ 03 июля 2019

Мне нужно изменить один метод на реактивный, который возвращает Enum.VALUE.Метод работает как фильтр из одного оператора if в другой.Я сделал это, используя Pair и код тормозят цепочку, когда некоторые оператор if возвращает true (метод map ()) или путь через все элементы.Это работает, но есть два вспомогательных метода, которые используются внутри оператора map () if, и они фактически блокируют, поэтому я должен сделать их неблокирующими.Вспомогательный метод One возвращает логическое значение и должен вызываться каждый раз при вызове метода.Вот пример кода:


public Mono<Enum> method(String param) {
return Mono.just(param)
   .map(
      //filter if-statement
    )
 .map(
      //filter if-statement
    )
 .map(
    pair -> {
       if (auxiliaryMethodOne(param)) {
      //filter if-statement
        }
      }
    )
 .map(
      //filter if-statement
    )
}

private Mono <Boolean> auxiliaryMethodOne(String param) {
    //some logic returns Mono<Boolean>
}

1 Ответ

0 голосов
/ 03 июля 2019

Вы можете использовать Mono#filterWhen:

myMono.filterWhen(pair -> auxiliaryMethodOne(param))
...