andThen()在RXJava2中如何工作?

时间:2018-07-24 22:03:24

标签: rx-java2

尝试学习RXJava2的Completable.andThen()

fun main(args: Array<String>) {
    showTime()
        .andThen(showTime())
        .subscribe()
}

private fun showTime(): Completable =
    Completable.create {
        println(System.currentTimeMillis())
    }

我希望上面的代码可以打印两次,但是只能打印一次。我在做什么错了?

1 个答案:

答案 0 :(得分:2)

andThen只是concatWith运算符的快捷方式。第二个showTime永远不会被订阅,因为您永远不会调用onComplete-在lambda中有一个CompletableEmitter对象。

您的方法应为:

private fun showTime(): Completable =  
    Completable.create {
        println(System.currentTimeMillis())
        it.onComplete()
    }