我在RxJava中使用switchIfEmpty
运算符在主要可观察值没有值时使用次要可观察值。以下是我的代码:
fun main(args: Array<String>) {
getFirstObservable()
.switchIfEmpty { getSecondObservable() }
.subscribe { println(it) }
}
fun getFirstObservable() = Observable.empty<String>()
fun getSecondObservable() = Observable.just("String1", "String2")
但是,即使第一个可观察变量为空,也不会从第二个可观察变量发出值,并且输出中不会打印任何内容。我想念什么吗?
答案 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")