在展平之前在RxJava中设置一个variables

Observable 从调用getSomething()返回。 Foo有一个列表,基本上是我想要的数据。 我需要过滤清单,所以我把它弄平了。 不过,我需要从Foo的另一个数据在subscribe.onNext()中设置一个variables。 我想要设置的variables是kotlin类的一个默认setter的成员。 我确实试图从地图返回@地图,但这似乎阻止了排放,使得filter无法使用。 我确实在其他线程中查看了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 

您不需要使用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) -> }