У меня есть вариант использования, когда я вызываю четыре отдельные конечные точки нисходящего потока, и все они могут быть вызваны параллельно. После завершения каждого вызова я возвращаю объект-контейнер из лямбда-функции, ее единственная цель — содержать необработанные ответы от последующих вызовов к нему. Оттуда объект-контейнер будет преобразован в требуемую модель для потребителя.
Вот, грубо говоря, структура кода:
Observable.zip(o1, o2, o3, o4,
(resp1, resp2, resp3, resp4)
-> new RawResponseContainer(resp1, resp2, resp3, resp4)
).toBlocking().first();
Есть лучший способ сделать это? Мне на 100% нужно, чтобы все наблюдаемые были выполнены; в противном случае трансформация потребительской модели будет неполной. Хотя я полагаю, что я мог бы преобразовать каждый индивидуальный ответ от каждого наблюдаемого «на лету», вместо того, чтобы ждать преобразования каждого ответа сразу, мне все же нужно, чтобы каждый вызов завершался до завершения преобразования.
Я читал, что использование toBlocking () при использовании rx — плохая практика (кроме «устаревших» приложений), поэтому любая помощь приветствуется.