首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在使用RX返回列表之前填充一些列表

在使用RX返回列表之前填充一些列表
EN

Stack Overflow用户
提问于 2019-04-11 06:21:04
回答 1查看 48关注 0票数 0

我正在尝试用机场的详细信息填充一个列表。首先,我要获取满足特定条件的机场列表,并获取列表中每个项目的详细信息。最后,我将返回填充的列表。

这就是我所拥有的:

代码语言:javascript
复制
override fun createObservable(params: String): Flowable<List<AirportsEntity>> {
        val destinationAirports = mutableSetOf<AirportsEntity>()
        return this.searchFlightRepository.getDestinationsByCode(params)
            .flatMap {
                Flowable.fromIterable(it)
            }
            .flatMap {
                this.searchFlightRepository.getAirportByCode(it.destination)
            }
            .flatMap {
                destinationAirports.add(it)
                Flowable.just(destinationAirports.toList())
            }
    }

上面的代码运行得很好,但是它会在列表中的每一项上发出一个可观察值。我想知道如何更改它,以便首先填充列表,然后在获取过程完成后返回它。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-11 06:48:51

是否有必要使用Flowable

这样的代码可能更合适:

代码语言:javascript
复制
    private val destinations = listOf("1", "2", "3", "4")

    fun getAirportDestinations(airportCode: String): Single<List<String>> =
            Observable.just(destinations)
                    .flatMapIterable { it }
                    .flatMapSingle { getAirportByCode(it) }
                    .toList()

    private fun getAirportByCode(destinationCode: String): Single<String> =
            Single.just("ABC1")

“它为列表中的每一项发出一个可观察的对象”- flatmap将为每一项发出。使用toList()将意味着它“返回发出单个项的单个项,即由有限源ObservableSource发出的所有项组成的列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55622100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档