1 回答

TA貢獻1799條經驗 獲得超6個贊
概括
您需要在languages源上發出完成信號
示例(基于提供的源代碼)
Observable<String> pLanguages = Observable.create(emitter -> {
emitter.onNext("Kotlin");
emitter.onNext("Java");
emitter.onNext("Python");
emitter.onNext("Javascript");
emitter.onNext("Go");
emitter.onNext("C");
emitter.onNext("Rust");
emitter.onComplete();
});
Kotlin 中的示例 (addt'l)
fun main(args: Array<String>) {
val numbers = Observable.just("one", "two", "three")
val languages = Observable.create<String> { emitter ->
emitter.onNext("java")
emitter.onNext("kotlin")
emitter.onNext("swift")
emitter.onComplete() // <-- Invoke this
}
languages
.filter { s -> s.toLowerCase().startsWith("z") }
.switchIfEmpty(numbers)
.subscribe({
System.out.println(it)
}, {
System.out.println(it)
})
numbers
.filter { s -> s.toLowerCase().startsWith("z") }
.switchIfEmpty(languages)
.subscribe({
System.out.println(it)
}, {
System.out.println(it)
})
}
輸出
one
two
three
java
kotlin
swift
閱讀更多
http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Emitter.html
添加回答
舉報