作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个方法可以无限期地(非有限)发出用户 ID 列表。
Observable<List<String>> getFriendUserIds()
另一个方法返回 Account
特定用户 ID 的数据。
Observable<Account> getAccount(String userId)
我需要获取Account
getFriendUserIds() 方法返回的所有用户 ID 的数据,分组在与用户 ID 列表相对应的列表中。
基本上,我需要以下内容,最好是非阻塞方式。
Observable<List<String>> // infinite stream
===> *** MAGIC + getAccount(String userId) ***
===> Observable<List<Account>> // infinite stream
示例:
["JohnId", "LisaId"]---["PaulId", "KimId", "JohnId"]------["KimId"]
===>
[<JohnAccount>, <LisaAccount>]---[<PaulAccount>, <KimAccount>, <JohnAccount>]------[<KimAccount>]
顺序并不重要,重要的是 List<Account>
必须包含Account
s 对应于 List<String>
中存在的每个用户 ID 。
**注意,这个问题类似于 this question ,但还有将结果项分组回列表的附加要求。
最佳答案
试试这个:
Observable<List<Account>> accountsList = getFriendUserIds()
.take(1)
.flatMapIterable(list -> list)
.flatMap(id -> getAccount(id))
.toList()
.toObservable();
或者这个:
Observable<List<Account>> accountsList = getFriendUserIds()
.flatMapSingle(list ->
Observable.fromIterable(list)
.flatMap(id -> getAccount(id))
.toList()
);
关于java - 如何使用以 X 作为参数并返回 Observable<Y> 的函数从 Observable<List<X>> 转换为 Observable<List<Y>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48959354/
我是一名优秀的程序员,十分优秀!