[英]RxJava + Kotlin - Using one observable in the creation of another
我試圖弄清楚如何在另一個中使用一個可觀察到的結果。 我有一個服務調用,該服務返回Observable<List<User>>
,此后,我有另一個服務調用,我想使用上一個可觀察對象的列表中每個用戶的ID( user.getId()
)創建一個列表ids List<Int>
的集合。 然后,此int列表將傳遞給第二個服務調用。 我該如何實現?
我希望這個問題有意義。 讓我知道是否需要澄清自己。
我想你想要flatMap
。 flatMap
是一個運算符,您可以在其中基於Observable的項目發出另一個Observable。
val obs: Observable<List<User>>
obs.flatMap { users: List<User> ->
serviceWhichEmitsObservable.doMagic(users)
}
如果需要單獨的用戶,則可以使用fromIterable轉換Observable>-> Obsersvable。 看到這個答案: RxJava-獲取列表中的每個項目
val obs: Observable<List<User>>
obs
.flatMap { users: List<User> -> Observable.fromIterable(users)
.flatMap { user: User -> serviceWhichEmitsObservable.doMagic(user) }
重讀您的問題后,我認為您想要的是: List<User>
-> List<Integer>
並將此列表傳遞給服務。 您必須先映射列表。 與RX無關。 但是:
val obs: Observable<List<User>>
obs
.map { users: List<User> -> users.map { it.id } }
.flatMap { userIds: List<Integer> -> serviceWhichEmitsObservable.doMagic(userIds) }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.