gpt4 book ai didi

android - RxJava - 给出异常后继续连接

转载 作者:太空狗 更新时间:2023-10-29 15:44:55 27 4
gpt4 key购买 nike

虽然我正在尝试按顺序运行 2 个可观察对象,但如果第一个给出特定错误,我想停止 concat 并执行另一件事。

尽管,第一个 observable 可能会给出许多异常,但我只想在达到特定错误时停止传播 concat(在本例中为 HttpException 403),另一方面,我想在出现特定错误时继续执行 concat没有任何 403 HttpException。

我已经完成了以下代码,但到目前为止我无法通过将当前可观察对象替换为 Observable.error(throwable) 来继续执行 concat。

有没有一种方法可以在不改变可观察逻辑或订阅者逻辑的情况下做到这一点?或者在出现特定错误时停止传播 concat,并在出现其他错误时继续?

 Observable.concat(getObservable1(), getObservable2())
.onErrorResumeNext(new Func1<Throwable, Observable<? extends OperationModel>>() {
@Override
public Observable<? extends OperationModel> call(Throwable throwable) {
if(throwable instanceof HttpException && ((HttpException)throwable).code() == 403) {
return Observable.error(throwable);
}
return Observable.empty(); //here I just want to proceed the concat despite giving an error
}
.subscribeOn(Schedulers.io()) //execute requests should be on io() thread
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new CustomRequestSubscriber<>());

最佳答案

试试这个:

Observable.concat(getObservable1().onErrorResumeNext(new Func1<Throwable, Observable<? extends OperationModel>>() {
@Override
public Observable<? extends OperationModel> call(Throwable throwable) {
if(throwable instanceof HttpException && ((HttpException)throwable).code() == 403) {
return Observable.error(throwable);
}
return Observable.empty(); //here I just want to proceed the concat despite giving an error
}), getObservable2())

.subscribeOn(Schedulers.io()) //execute requests should be on io() thread
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new CustomRequestSubscriber<>());

这应该会捕获第一个 observable 中的错误,然后您可以继续第二个 observable。

关于android - RxJava - 给出异常后继续连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40229223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com