我有两个相互依赖的网络电话。接下来,
getBookList(): Single<List<Book>>
getBookCover(bookId): Single<Cover>
首先,我需要先获取bookList,然后再调用bookCover,因为Cover api需要bookId。
在那之后,我需要合并List<BookWithCover>
列表之类的结果。
如何使用RxJava做到这一点?我已经搜索了flatMapIterable运算符,但无法对其进行管理。
答案 0 :(得分:0)
我想解决方案可能是:
getBookList()
.toObservable()
.flatMapIterable { it }
.flatMap { getBookCover(it.bookId).toObservable() }
.map { /* here convert to BookWithCover */ }
.toList()
从本质上讲,获取书籍列表并将其映射到发出每一本书的可观察对象。有了它,就可以得到每个书的封面,并将其映射到BookWithCover
。最后,只需将所有内容放回列表中即可。