依赖RxJava的网络调用列表和项目

时间:2019-06-06 01:49:02

标签: rx-java2 rx-android

我有两个相互依赖的网络电话。接下来,

getBookList(): Single<List<Book>>

getBookCover(bookId): Single<Cover>

首先,我需要先获取bookList,然后再调用bookCover,因为Cover api需要bookId。

在那之后,我需要合并List<BookWithCover>列表之类的结果。

如何使用RxJava做到这一点?我已经搜索了flatMapIterable运算符,但无法对其进行管理。

1 个答案:

答案 0 :(得分:0)

我想解决方案可能是:

getBookList()
    .toObservable()
    .flatMapIterable { it }
    .flatMap { getBookCover(it.bookId).toObservable() }
    .map { /* here convert to BookWithCover */ }
    .toList()

从本质上讲,获取书籍列表并将其映射到发出每一本书的可观察对象。有了它,就可以得到每个书的封面,并将其映射到BookWithCover。最后,只需将所有内容放回列表中即可。