Как обработать ответ, который имеет Mono <T> - PullRequest
0 голосов
/ 19 марта 2019

У меня есть объект ответа, подобный приведенному ниже, который мне нужно вернуть вызывающей стороне моей службы. Мне нужно вернуть экземпляр R.

public class R {
    private A a;
    private B b;
}

Я делаю 2 сервисных звонка, чтобы получить Mono от одного и Mono от другого.

Теперь я пытаюсь выполнить эти сервисные вызовы следующим образом. Я не знаю, как я могу создать экземпляр «C» и установить значения A и B, которые были возвращены из вызовов службы.

Mono.empty()                      .concatWith(//Call that returns Mono<A>)
.concatWith(//Call that returns Mono<B>)
.??? // What do I do now? How to get A and B and 
     // set  it in a new instance of C?

Спасибо.

1 Ответ

1 голос
/ 19 марта 2019

Используйте Mono#zipWith, а затем map:

Mono<A> aMono = Mono.just(new A());
Mono<B> bMono = Mono.just(new B());

aMono.zipWith(bMono)
    .map(t -> new R(t.getT1(), t.getT2()));

Или static zip метод

Mono.zip(aMono, bMono, R::new); // returns Mono<R>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...