【发布时间】:2015-11-17 22:51:47
【问题描述】:
我正在使用 RxJava,但在理解 flatMap 时遇到了问题。
Observable.just(1)
.flatMap(
item -> Observable.just(item + 1),
e -> Observable.error(e),
() -> Observable.never())
.subscribe(
i -> {
Log.d(TAG, "Got " + i);
},
e -> {
Log.d(TAG, "RxJava ERROR", e);
});
失败
java.lang.NullPointerException: Attempt to invoke virtual method 'void rx.internal.operators.OperatorMapNotification$SingleEmitter.offer(java.lang.Object)' on a null object reference
at rx.internal.operators.OperatorMapNotification$1.onNext(OperatorMapNotification.java:82)
at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:46)
at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:35)
at rx.Observable$1.call(Observable.java:145)
at rx.Observable$1.call(Observable.java:137)
at rx.Observable$1.call(Observable.java:145)
at rx.Observable$1.call(Observable.java:137)
at rx.Observable.subscribe(Observable.java:7803)
at rx.Observable.subscribe(Observable.java:7579)
相同的代码,但有 Observable.just(1,2,3) 工作正常
Got 2
Got 3
Got 4
这是一个 bug 还是为什么 RxJava 只使用一个参数就表现不同? RxJava 版本为 1.0.13
【问题讨论】:
-
奇数。不会发生在 1.0.12 上。可能值得报告为错误
-
刚刚用 1.0.12 测试过,它可以工作...
标签: rx-java