[英]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.