gpt4 book ai didi

java - Rx-Java 在出现错误时替换 Observable

转载 作者:行者123 更新时间:2023-12-01 19:58:21 26 4
gpt4 key购买 nike

我有 2 个 URL 来获取数据,例如:\location_1\{userid}\location_2\{userid}。首先,我获取用户列表,然后需要通过上述请求获取用户详细信息。问题是我需要调用 \location_1\{userid} ,以防出现错误(异常)从 \location_2\{userid} 获取数据。是否可以用单个接收链来实现?我已经按照描述尝试了 try/catch here但看起来捕获较新的调用,只有 onErrorResumeNext 调用。

Observable<List<TestModel2>> observable = apiTest
.performTest()
.flatMapIterable(items -> items)
.flatMap(testModel -> {

try
{
return apiTest.performTest2(testModel.userId);

} catch (Exception e)
{
return apiTest.performTest3(testModel.userId);
}

}).doOnNext(testModel2 -> {Log.d("TestItemData", "doOnNext --- " + testModel2.title);})
.onErrorResumeNext(throwable ->{
Log.d("TestItemData", "onErrorResumeNext -------- ");
return Observable.empty();
})
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());

最佳答案

使用onErrorResumeNext(正如您稍后在流程中所做的那样):

Observable<List<TestModel2>> observable = apiTest
.performTest()
.flatMapIterable(items -> items)
.flatMap(testModel ->
apiTest.performTest2(testModel.userId)
.onErrorResumeNext(e -> apiTest.performTest3(testModel.userId)); // <----------------
)
.doOnNext(testModel2 -> {
Log.d("TestItemData", "doOnNext --- " + testModel2.title);
})
.onErrorResumeNext(throwable ->{
Log.d("TestItemData", "onErrorResumeNext -------- ");
return Observable.empty();
})
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());

关于java - Rx-Java 在出现错误时替换 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48704110/

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