簡體   English   中英

RxJava + Kotlin-在創建另一個觀察值時使用

[英]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)
}

flatMap運營商

如果需要單獨的用戶,則可以使用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.

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