【问题标题】:RxJava flatMap with Observable.just() and one argument带有 Observable.just() 和一个参数的 RxJava flatMap
【发布时间】: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

【问题讨论】:

标签: rx-java


【解决方案1】:

这是 1.0.13 和 1.0.14 的错误。该修复程序将在 1.0.15 中提供(还没有截止日期)。

【讨论】:

  • 那么,基本上flatMap 的源 Observable 只发出一个元素,目前不起作用?还是问题比​​这更具体?
  • 这个特定的flatMap 过载不适用于just 或其他目前不支持背压的来源。
猜你喜欢
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多