Replace () -> Unit для простого решения RxJava - PullRequest
0 голосов
/ 06 сентября 2018

Я хотел бы изменить мои параметры () -> Unit на Reactive Observer.

Например, у меня есть этот класс:

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

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

Существует модуль onSuccess. Я называю это, когда он закончил со своей задачей.

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 голосов
/ 06 сентября 2018

Вы можете сделать это через 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)
  }
}
...