kotlin - RxJava Zip 可观察可迭代

标签 kotlin rx-java observable rx-java2

我想压缩 Observable<List<Int>> 的列表.

fun testObservablezip() {
    val jobs = mutableListOf<Observable<List<Int>>>()
    for (i in 0 until 100 step 10) {
        val job = Observable.fromArray(listOf(i + 1, i + 2, i + 3))
        jobs.add(job)
    }

    val listMerger = Function<Array<List<Int>>, List<Int>> { it.flatMap { it } }
    Observable.zip(jobs, listMerger) // No valid function parameters
}

尽管 listMerger已定义其输入和输出,zip不接受。

最佳答案

zip的函数在 RxJava 中定义为 Function<? super Object[], R>所以你必须指定一个对象数组,而不是 List<Int>数组,然后将对象数组元素转换回 List<Int> :

import io.reactivex.Observable
import io.reactivex.functions.Function;

fun testObservablezip() {
    val jobs = mutableListOf<Observable<List<Int>>>()
    for (i in 0 until 100 step 10) {
        val job = Observable.fromArray(listOf(i + 1, i + 2, i + 3))
        jobs.add(job)
    }

    val listMerger = Function<Array<Any>, List<Int>> { 
         it.flatMap { it as List<Int> } }

    Observable.zip(jobs, listMerger) // No valid function parameters
}

关于kotlin - RxJava Zip 可观察可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50423572/

相关文章:

android - RxJava2 - 将多个 Singles 发出的结果组合成一个 Map

Angular2销毁 View 上的订阅销毁

javascript - 用于嵌套 api 调用的 Angular 6 mergeMap

javascript - 如何在不触发计算的情况下更新计算中的可观察对象?

android - 每当参数时 mockito-kotlin - 指定为非空的参数为空

android - Jetpack 中是否有类似颤动的热重载?

android - LiveDataReactiveStreams : converting Flowable to LiveData doesn't work

reflection - 在运行时确定 Kotlin 的版本

android - 在 Kotlin 中将值格式化为人类可读形式的依赖性

android - 合并多个 Single 形成一个 Observable