Replace()->将单元转换为简单的RxJava解决方案

时间:2018-09-06 07:20:10

标签: kotlin rx-java2

我想将() -> Unit参数更改为Reactive Observer。

例如,我有一个此类:

class ExampleClass {
    var onSuccess: (() -> Unit?)? = null

    private fun doSomething(){
        //...
        onSuccess?.invoke()
        //...
    }
}

有一个“成功”单位。当任务完成时,我称呼它。

fun doAnother(){
    val instance = ExampleClass()
    instance.onSuccess = {
        // onSuccess run
    }

}

这是我如何定义onSuccess的示例。

我正在寻找具有 RxJava 这样的简单解决方案。

class ExampleClass {
    var onSuccess: AnyMagic

    private fun doSomething(){
        //...
        onSuccess.notify()
        //...
    }
}

fun doAnother(){
    val instance = ExampleClass()
    instance.onSuccess
            .subscribe {
                // RxJava
            }
}

有人能很好地解决这个问题吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您可以通过RxRelay完成。

获取依赖项

implementation 'com.jakewharton.rxrelay2:rxrelay:2.0.0'

那是代码

val myRelay: PublishRelay<String> = PublishRelay.create()

private fun doSomething() {
  myRelay.accept("Hello world")
}

fun doAnother() {
  myRelay.subscribe { s ->
    println(s)
  }
}