【问题标题】:rxjava behaviour of onErrorResumeNextonErrorResumeNext 的 rxjava 行为
【发布时间】:2016-11-29 17:21:43
【问题描述】:

我无法让 Observer.onErrorResumeNext 的行为符合我的预期。

Subscriber orchestratorObserver = new Subscriber<Integer>() {
    @Override
    public void onCompleted() {
        System.out.println("orchestratorObserver."+"onCompleted()");
    }

    @Override
    public void onError(Throwable e) {
        System.out.println("orchestratorObserver."+"onError()"+e.getMessage());
    }

    @Override
    public void onNext(Integer i) {
        System.out.println("orchestratorObserver."+"onNext() : "+i);
    }
};

@Test
public void rxTest() {
    Observable.range(0,5)
            .doOnNext(new Action1<Integer>() {
                @Override
                public void call(Integer integer) {
                    throw new RuntimeException("chain error!!");
                }
            })
            .onErrorResumeNext(Observable.just(-1))
            .subscribe(orchestratorObserver);
}

@Test
public void rxTest1() {

    final Observable<Integer> errorTrainObservable = Observable.defer(
            new Func0<Observable<Integer>>() {
                @Override
                public Observable<Integer> call() {
                    return Observable.error(new RuntimeException("source error"));
                }
            });

    errorTrainObservable.onErrorResumeNext(Observable.just(-1));

    errorTrainObservable.subscribe(orchestratorObserver);
}

所以 rxTest() 输出:

orchestratorObserver.onNext() : -1
orchestratorObserver.onCompleted()

当 rxTest1() 输出时:

orchestratorObserver.onError()source error

我希望 rxTest1 输出与 rxTest 相同的 onNext 事件 - 我该怎么做?即我想吞下错误并发出一个默认值 onNext 事件。

如果错误在源头,它会以一种方式表现,这似乎很奇怪 - 但如果错误是链,它会以另一种方式表现?如果你能向我解释一下,加分:)

【问题讨论】:

    标签: android rx-java system.reactive


    【解决方案1】:

    这些行:

    errorTrainObservable.onErrorResumeNext(Observable.just(-1));
    
    errorTrainObservable.subscribe(orchestratorObserver);
    

    您创建一个带有错误处理程序的Observable,然后将其丢弃,然后订阅没有错误处理程序的可观察对象。

    【讨论】:

      猜你喜欢
      • 2014-10-27
      • 2016-12-02
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多