【发布时间】:2018-02-24 04:25:46
【问题描述】:
我有一个方法可以无限期地(不是有限地)发出用户 ID 列表。
Observable<List<String>> getFriendUserIds()
另一种方法返回特定用户 ID 的 Account 数据。
Observable<Account> getAccount(String userId)
我需要获取 getFriendUserIds() 方法返回的所有用户 id 的 Account 数据,并在与用户 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> 必须包含与List<String> 中存在的每个用户ID 相对应的Accounts。
**请注意,此问题类似于this question,但需要将结果项重新组合到列表中。
【问题讨论】:
-
只需将
toList应用于您在该问题的答案中发现的流程。 -
@akarnokd 但
toList会将其转换为Single,并且还要求源Observable是有限的。getFriendUserIds()是一个无限源。 -
请熟悉 RxJava 中可用的操作符——它会为您节省大量时间。在这种情况下,您需要
take(1)来限制源,并需要toObservable()来转换回Observable。 -
@akarnokd 我编辑了问题,请再看一下。
标签: java rx-java reactive-programming