Есть оператор Rx Java, который делает то, что вам нужно. Он называется flatMap ( Мрамор и информация об операторе здесь ).
С помощью этого мощного оператора вы можете получить выходные данные первой наблюдаемой в качестве входной для той, которая была создана flatMap, а затем вернуть это как Observable.
Извините, я на самом деле не привык к java, поэтому следующий код почти уверен, что это не сработает, но просто чтобы сделать идею ...
В вашем примере вы могли бы сделать что-то вроде:
Disposable disposable = photosCacheRepository.getPhotoAttachments(workOrderId)
.subscribeOn(Schedulers.io())
.flatmap(photoAttachments -> {
workOrdersRepository.getWorkOrderDetails(workOrderId)
.map(workOrderDetails -> {
List<PhotoAttachment> photos = new ArrayList<>();
photos.addAll(photoAttachments);
photos.addAll(workOrderDetails.getAppointmentOccurrence().getPhotoAttachments());
return photos;
.ObserveOn(AndroidSchedulers.mainThread())
.subscribe(photos -> {
if (photos.isEmpty()) {
view.displayNoWorkOrderPhotos();
} else {
view.displayWorkOrderPhotos(photos);
}...
Надеюсь, это поможет, хотя бы немного:)