这是测试代码
final Flowable<Integer> f1 = Flowable.fromPublisher(s -> {
s.onNext(Integer.valueOf(1));
s.onComplete();
});
final Flowable<Integer> f2 = Flowable.fromPublisher(s -> {
s.onNext(Integer.valueOf(2));
s.onComplete();
});
Flowable.zip(f1, f2, (i1, i2) -> "" + i1 + i2)
.blockingSubscribe(System.out::println);
它会得到
Exception in thread "main" java.lang.NullPointerException
at io.reactivex.internal.operators.flowable.FlowableZip$ZipSubscriber.onNext(FlowableZip.java:386)
我不明白为什么?
如果我像这样更新代码
final Flowable<Integer> f1 = Flowable.<Integer>fromPublisher(s -> {
s.onNext(Integer.valueOf(1));
s.onComplete();
}).onErrorResumeNext(Flowable.empty());
final Flowable<Integer> f2 = Flowable.<Integer>fromPublisher(s -> {
s.onNext(Integer.valueOf(2));
s.onComplete();
}).onErrorResumeNext(Flowable.empty());
Flowable.zip(f1, f2, (i1, i2) -> "" + i1 + i2)
.blockingSubscribe(System.out::println);
它将按预期打印 12 。但为什么?这没有意义。