RxJava Перебирать список, вызывать API для каждого элемента и возвращать список в результате?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 RxJava Перебирать список, вызывать API для каждого элемента и возвращать список в результате?

Сообщение Anonymous »

Мне нужно вызвать API, который возвращает объект, и внутри этого объекта есть список.
Для каждого элемента в этом списке мне нужно получить подробную информацию об элементе. Чтобы получить подробную информацию, мне также нужно выполнить асинхронные вызовы API.
В конце концов мне нужно вернуть исходный объект.
Мой код выглядит так:

Код: Выделить всё

mDataRepository.getSearchResult(String.valueOf(searchQuery))
.subscribeOn(SchedulerFactory.get().getContentScheduler())
.filter(searchResultList - > searchResultList != null &&
searchResultList.contents != null &&
searchResultList.contents.list != null)
.map(searchResultList - > {
Arrays.stream(searchResultList.contents.list)
.filter(Objects::nonNull)
.collect(Collectors.toList())
.forEach(contentItem - > {
if (VLOG_TYPE == contentItem.type) {
Vlog vlog = mDataRepository.getVlogInfo(contentItem.type)
.defaultIfEmpty(new Vlog())
.blockingFirst(); // has to go away
contentItem.description = vlog.description;
}
});
return searchResultList;
});
Меня попросили удалить .blockingFirst(); и переработать логику.
Проблема в том, что я не знаю, как это переделать, потому что это цепочка методов выше и ниже этого вызова.
Мысли?

Подробнее здесь: https://stackoverflow.com/questions/789 ... -as-result
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»