通过适当处理扩展Kotlin中的RxJava Observable

时间:2017-05-31 13:54:34

标签: rx-java kotlin

我尝试为RxJava创建一个与scan类似的新运算符,但可以采用两种不同的类型。这类似于foldreduce的传统实现,其中如果给出默认值,则只要返回类型与累加器匹配,折叠函数的参数可以是不同类型。

这是我到目前为止所做的事情。

fun <T, R> Observable<T>.fold(acc: R, f: (R, T) -> R): Observable<R> = Observable.create { o ->
    var accm = acc
    subscribe({
        accm = f(accm, it)
        o.onNext(accm)
    }, {
        o.onError(it)
    }, {
        o.onComplete()
    })
}

我只是在this块中订阅Observable.create,并使用通过累加器函数输入的新值更新观察者。问题是,当this被处置时,订阅不会被清除。我该怎么办?

0 个答案:

没有答案