我必须调用一个
API
,它返回一个对象,在这个对象内部,有一个list
。
对于这个 list
中的每一项,我都必须检索 item details
。要检索 details
,我还必须进行异步 API
调用。
最后,我需要归还原来的object
。
我的代码如下所示:
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();
并重新设计逻辑。
问题是,我真的不知道如何修改它,因为它是此调用上方和下方的方法的chain
。
想法?