我想知道是否有适合我的用例的rxjava操作符。我有以下两种方法。这些是改装接口。
fun getSources(): Single<Sources>
fun getTopHeadlines(sourceCsv: String): Single<TopHeadlines>
现在我在做这个
getSources()
.map { sources ->
// convert the sources list to a csv of string
}
.flatMap { sourcesCsv
getTopHeadlines(sourcesCsv)
}
.subsribe {topHeadlines, error -> }
如果我的目标是登上头条新闻的话,这样做很好。但我想得到的是订阅时的来源和头条新闻?有没有我不知道的接线员,或者有没有其他方法来做同样的事情?
1条答案
按热度按时间klsxnrf11#
你可以用
zip()
方法来执行此操作。zip等待这两个项目,然后发出所需的值。你可以这样用当你订阅这个时,两个值都是成对的。你可以为它做一个扩展函数,让你的生活更轻松:
在你的身体里
flatMap
你能做到的getTopHeadlines(sourcesCsv).zipWithValue(sourcesCsv)
. 我们也可以这样做Maybe
,和Flowabale
你可以用combineLatest()
方法。