我正在使用 RxJava + Retrofit。
比如有文章
public class Article {
private Long articleId;
private Long userId;
private String image;
private String text;
...
}
和用户
public class User {
private Long userId;
private String userName;
private String image;
...
}
还有两个服务
-
Observable<List<User>> getUserByUserIds(List<Long> userIds)
和 -
Observable<List<Article>> listArticles(int pageIdx, int pageMax)
我想列出 10 篇文章,以及相关的作者用户信息,将它们组装成类似于 Observable<List<Pair<Article, User>>>
的内容,这可能吗?
最佳答案
这应该可以解决问题:
listArticles(int pageIdx, int pageMax)
.flatMapIterable(list->list)
.flatMap(article ->
getUserByUserIds(article.userId)
.subscribeOn(Schedulers.io())
.flatMapIterable(list->list),
Pair::of
)
.toList();
但是,API 的规范很糟糕; Observables 已经有一个固有的顺序,不需要将所有东西都包装在一个列表中。 getUserByIds - 它会返回单个用户还是多个用户?为什么不为 User 方法设置一个 id?为什么域对象中的 ID 不是原语?您希望商品没有 ID 吗?
关于java - 改造 + RxJava : How to request for multiple request in order and assemble results in single Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39661192/