如何在 Kotlin 中使用 RxJava2 combineLatest 和可观察值列表

Her*_*t74 3 kotlin rx-java2 rx-kotlin2

我知道如何在RxJava 2 中做到这一点

而且我知道RxKotlin如何帮助解决类似问题。

但似乎 RxKotlin.Observables 没有列表重载的这个辅助函数,我无法弄清楚。你会怎么做?

mar*_*ran 6

RxJava 中的大多数静态函数都是 RxKotlin 中的扩展函数。这个特殊的功能是对 的扩展Iterable<Observable<T>>。你可以这样称呼它:

listOfObservables.combineLatest { ... }
Run Code Online (Sandbox Code Playgroud)


ali*_*aty 5

对于 RxJava 2,这可以通过这种方式完成

    val list = Arrays.asList(
            remoteRepository.getHospitals(),
            remoteRepository.getQuestionCategories(),
            remoteRepository.getQuestions(),

    )


    return Observable.combineLatest(list) {

        val hospitals = it[0] as List<Hospital>

        val questionCategories = it[1] as List<QuestionCategory>
        val questions = it[2] as List<Question>


        localRepository.insertHospitals(hospitals)
        localRepository.insertQuestionCategories(questionCategories)
        localRepository.insertQuestions(questions)


        if (hospitals.isNotEmpty())
            Constants.STATUS_OK
        else
            Constants.STATUS_ERROR

    }
Run Code Online (Sandbox Code Playgroud)