0
としての取り扱いは、もはやヌル値を受け入れるdocs RxJava 2.xで説明していません。だから、次の2行の両方が呼ばonError
で終了していることは驚くべきことではない:不明である何ヌルはRX-Java2のflatMapに
Observable.fromCallable(() -> null);
Observable.just(1).flatMap(i -> Observable.error(new RuntimeException()));
Observable.just(1).flatMap(i -> Observable.fromCallable(() -> null))
が成功し、放出されていない項目で終了する理由です。それは、私はそれがコードの面で起こっている理由を説明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();
}
...
}
のソースコードに見ることができますObservable.error
と同じように振る舞うために期待するのは合理的な縫い目が、私はまだ二つの質問があります。
1)、これは意図した動作やバグですか?
2)これは理由がありますか?