代码之家  ›  专栏  ›  技术社区  ›  vihkat

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

  •  0
  • vihkat  · 技术社区  · 6 年前

    我想换一下衣服 () -> Unit

    例如,我有一门课:

    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 回复  |  直到 6 年前
        1
  •  1
  •   David    6 年前

    你可以通过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)
      }
    }