RX java объединяет наблюдаемые с отношениями один ко многим - PullRequest
0 голосов
/ 31 января 2020

У меня есть объект Observer, который подписан на Observable. Этот Observable выполняет SQL запрос к БД, получает несколько результатов, а затем делает

    .forEach(...)

Теперь мне нужно добавить второй SQL запрос, чтобы заполнить этот объект большим количеством данных. На этот раз результатом является только одно заданное значение c. Я видел, что есть функция zip, но она выполняет сопряжение один к одному в соответствии с документацией. Мне нужно построить объект, который выглядит так:

    MyObject{
        int i;
        List<AnotherObject>;
    }

1 Ответ

0 голосов
/ 01 февраля 2020

Вы можете использовать toList() в Observable, возвращенном первым запросом, чтобы превратить его в Single<List>. Затем вы можете использовать zipWith, чтобы объединить это с результатом вашего второго запроса, который вы можете сделать возвращающим Single, поскольку он генерирует только один элемент.

query1() // Returns Observable<AnotherObject>
  .toList()  // Gives you Single<List<AnotherObject>>
  .zipWith(query2(), (result1, result2) -> new MyObject(result1, result2)))
  ...
...