如果第一个为空,则switchIfEmpty不会从第二个可观察值发出值

时间:2018-10-27 16:14:14

标签: kotlin rx-java rx-java2

我在RxJava中使用switchIfEmpty运算符在主要可观察值没有值时使用次要可观察值。以下是我的代码:

fun main(args: Array<String>) {
      getFirstObservable()
        .switchIfEmpty { getSecondObservable() }
        .subscribe { println(it) }
}

fun getFirstObservable() = Observable.empty<String>()
fun getSecondObservable() = Observable.just("String1", "String2")

但是,即使第一个可观察变量为空,也不会从第二个可观察变量发出值,并且输出中不会打印任何内容。我想念什么吗?

1 个答案:

答案 0 :(得分:2)

使用普通的括号,而不是花括号。当您需要提供参数而不是lambda时,这是Kotlin的一个常见错误。

fun main(args: Array<String>) {
    getFirstObservable()
        // ----------- v --------------------- v --------------
        .switchIfEmpty ( getSecondObservable() )
        // ----------- ^ --------------------- ^ --------------
        .subscribe { println(it) }
}

fun getFirstObservable() = Observable.empty<String>()
fun getSecondObservable() = Observable.just("String1", "String2")