RxJava - получение записи в Observable во втором flatMapSingle - PullRequest
0 голосов
/ 06 июня 2019

У нас есть vertx ver vert, которая получает идентификатор и использует его, чтобы увидеть, существует ли объект с идентификатором в базе данных.Он содержит следующую логику:

if (itemFound) {
  e.onNext(item_which_was_found)
}
else {
  e.onNext(null);
}

Другая вертикаль имеет Observable, которая обрабатывает список идентификаторов.Он использует rxSend для передачи каждого идентификатора в списке первой вертикали для поиска в базе данных:

Observable<Object> observable = ...
observable.flatMapSingle(id -> {
  return rxSend(VERTICLE_1_ADDRESS, id);
})
.flatMapSingle ( i ->
{ 
  // Logic dependent on if item was found
)
.subscribe();

С учетом вышеизложенного легко обрабатывать случаи, когда был найден объект, связанный с идентификатором.в базе данных, потому что первый vertcle в onNext() возвращает сущность.Вопрос касается второго случая, когда сущности не существует и первая вертикаль возвращает onNext(null).В таком случае, как можно извлечь во втором flatMapSingle элемент в наблюдаемой, который в настоящее время обрабатывается (то есть id, который не имеет ассоциированного объекта базы данных)?Или есть лучший способ структурировать код?

Спасибо

1 Ответ

1 голос
/ 06 июня 2019

Вы можете изменить свое наблюдаемое определение на:

Observable<Object> observable = observable();
observable.flatMapSingle(id -> {
  return rxSend(VERTICLE_1_ADDRESS, id).flatMap(i -> {
    // Logic dependent on if item was found
    // id is visible here
  });
}).subscribe();

Тогда id будет виден вашей второй лямбде.

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