RxJava。在onNext之后调用onError

时间:2017-09-12 09:08:08

标签: android rx-java

我想调用onNext然后调用onError方法。但我不能这样做。有谁能够帮我?例如:

Observable.create(new ObservableOnSubscribe<String>() {
    @Override
    public void subscribe(ObservableEmitter<String> e) throws Exception {
        e.onNext("value");
        e.onError(new Exception("exc"));
    }
})
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer<String>() {
            @Override
            public void accept(@NonNull String s) throws Exception {
                Log.v("TAG", s);
            }
        }, new Consumer<Throwable>() {
            @Override
            public void accept(@NonNull Throwable throwable) throws Exception {
                Log.v("TAG", throwable.getLocalizedMessage());
            }
        });

输出:exc

Thrad.sleep(500)帮助我,但我认为这是错误的方式

1 个答案:

答案 0 :(得分:1)

如果您未在delayError = true运算符中指定observeOn,那么它最终会在结束{{1}之前检查是否终止(onError已被调用)这是事先调用过的。

参见文档:

  

delayError - 指示onError通知是否可能不会在调度边界另一侧的onNext通知之前切断。如果为true,以onError结尾的序列将按照从上游

接收的顺序重放