代码之家  ›  专栏  ›  技术社区  ›  dev.farmer

你为什么这么做可完成的。然后不是工作吗?

  •  0
  • dev.farmer  · 技术社区  · 6 年前

    我正在使用Kotlin、RxJava(RxKotlin)开发一个Android应用程序。

    interface RetrofitApi {
        @Get
        fun getA(): Completable
    
        @Post
        fun save(obj: Any): Completable
    }
    

    我有一个改装代码像鞋面。

    
    fun getAndSave() {
        retrofitApi.getA()
                    .andThen {
                        retrofitApi.save(any())
                    }
                    .subscribe()
    }
    

    但是第二个Completable没有运行!

    fun getAndSave() {
        val secondCall = retrofitApi.save(any())
        retrofitApi.getA()
                    .andThen(secondCall)
                    .subscribe()
    }
    

    有什么区别???

    0 回复  |  直到 6 年前
        1
  •  1
  •   Aarjav    6 年前

    他们正在调用两个不同的 andThen 方法。

    在第二种情况下(使用secondCall变量),save Completable会立即创建,但在getA Completable完成之前不会订阅。(传递一个CompletableSource,一旦getA Completable完成,就会订阅它)