0
如docs中所述,RxJava 2.x不再接受空值。因此,這並不奇怪,無論是以下兩行與onError
叫做終止:rx-java2中的空處理flatMap
Observable.fromCallable(() -> null);
Observable.just(1).flatMap(i -> Observable.error(new RuntimeException()));
什麼不清楚就是爲什麼
Observable.just(1).flatMap(i -> Observable.fromCallable(() -> null))
終止與成功,並沒有任何項目發出的。它接縫有理由期待它以同樣的方式表現爲Observable.error
我可以在RX-Java的源代碼見2.1.2
public final <R> Observable<R> flatMap(...) {
if (this instanceof ScalarCallable) {
@SuppressWarnings("unchecked")
T v = ((ScalarCallable<T>)this).call();
if (v == null) {
return empty();
}
...
}
這可以解釋爲什麼它在代碼方面發生,但我仍然有兩個問題:
1)這是預期的行爲還是錯誤?
2)如果有意,是否有原因?