0

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

这是我所拥有的:

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())
            }
    }

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

提前致谢。

4

1 回答 1

1

Flowable必要使用吗?

像这样的东西可能更合适:

    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()将意味着它“返回一个发出单个项目的 Single,一个由有限源 ObservableSource 发出的所有项目组成的列表。

于 2019-04-10T22:48:50.953 回答