当主要可观察对象没有值时,我在RxJava中使用switchIfEmpty
运算符来使用次要可观察对象。以下是我的代码:
fun main(args: Array<String>) {
getFirstObservable()
.switchIfEmpty { getSecondObservable() }
.subscribe { println(it) }
}
fun getFirstObservable() = Observable.empty<String>()
fun getSecondObservable() = Observable.just("String1", "String2")
然而,即使第一个可观察到的是空的,它也不会从第二个可观察的中发出值,并且输出中不会打印任何内容。我是不是错过了什么?
使用普通括号,而不是大括号。当您需要提供一个参数而不是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")