簡體   English   中英

如何從Observable轉換 <List<X> &gt;至可觀察 <List<Y> &gt;,使用以X作為參數並返回Observable的函數 <Y>

[英]How to convert from Observable<List<X>> to Observable<List<Y>>, using a function that takes X as parameter & returns Observable<Y>

我有一個方法可以無限期地(不是有限的)發出用戶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對應的Account

**請注意,這個問題是類似這個問題 ,但到組的附加要求的結果條目返回到列表中。

嘗試這個:

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()
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM