switchIfEmpty не испускает вейлы из второй наблюдаемой, если первая пуста - PullRequest
0 голосов
/ 27 октября 2018

Я использую оператор switchIfEmpty в RxJava для использования вторичной наблюдаемой, когда основная наблюдаемая не имеет значения. Вот мой код:

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

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

Однако, даже если первая наблюдаемая пуста, она никогда не выдаст значения из второй наблюдаемой, и в выводе ничего не печатается. Я что-то упустил?

1 Ответ

0 голосов
/ 28 октября 2018

Используйте нормальные скобки, а не фигурные скобки.Это довольно распространенная ошибка с 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")
...