可观察<富>从调用getSomething()返回。 Foo里面有一个列表,基本上就是我想要的数据。我需要过滤列表,以便将其展平。但是,我需要来自Foo的另一段数据来设置subscribe.onNext()中的变量。我想要设置的变量是具有默认setter的kotlin类的成员。我确实尝试从地图返回@ map,但这似乎停止了发射,使得过滤器无法使用。我确实在其他线程中查看了Pair和嵌套的Observable建议,但是没有发现它有用。我还查看了flatMapIterable的第二个带有Func2的重载版本,但没有得到它吐出限制。如何在这种情况下正确应用上述任何一种,还是有另一种更简单的解决方案?
service.getSomething()
.subscribeOn(Schedulers.io())
---> here I need to set limit = Foo.data.limit
.flatMapIterable { t -> t.data.results }
.filter({ s -> filterLogic(s) })
.toList()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ c -> //this is the list, not Foo
答案 0 :(得分:0)
您不需要使用Rx将列表展平,然后对其进行过滤。您可以使用Kotlin的 List.filter 功能。您的最终代码可能如下所示:
service.getSomething()
.subscribeOn(Schedulers.io())
.map {
Pair(Foo.data.results.filter(this::filterLogic), Foo.data.limit)
}
.observeOn(AndroidSchedulers.mainThread())
.subscribe { (filteredResults, limit) ->
}