gpt4 book ai didi

java - Observable.concat 异常

转载 作者:太空狗 更新时间:2023-10-29 13:50:03 24 4
gpt4 key购买 nike

我有 2 个数据源:数据库和服务器。当我启动应用程序时,我从存储库 (MyRepository) 调用方法:

public Observable<List<MyObj>> fetchMyObjs() {
Observable<List<MyObj>> localData = mLocalDataSource.fetchMyObjs();
Observable<List<MyObj>> remoteData = mRemoteDataSource.fetchMyObjs();
return Observable.concat(localData, remoteData);
}

我订阅如下:

mMyRepository.fetchMyObjs()         
.compose(applySchedulers())
.subscribe(
myObjs -> {
//do somthing
},
throwable -> {
//handle error
}
);

我期望从数据库中加载数据会更快,当从网络下载数据完成后,我将简单地更新Activity中的数据。

当连接到 Internet 时,一切正常。但是当我们在没有连接到网络的情况下打开应用程序时,mRemoteDataSource.fetchMyObjs(); 抛出 UnknownHostException 并且所有 Observable 在此结束(localData< 的订阅者 不起作用(尽管日志显示数据库中的数据已被获取))。当我尝试再次从 MyRepository 类(通过 SwipeRefresh)调用 fetchMyObjs() 方法时,localData 的订阅者被触发。

当网络关闭时,当应用程序启动时,订阅者是否为 localData 工作?

最佳答案

尝试一些错误处理运算符:

https://github.com/ReactiveX/RxJava/wiki/Error-Handling-Operators

我猜 onErrorResumeNext() 会没问题,但你必须自己测试它。也许这样的事情对你有用:

Observable<List<MyObj>> remoteData = mRemoteDataSource.fetchMyObjs()
.onErrorResumeNext()

此外,我无法判断您的想法是否正确,但也许值得考虑重建此流程。忽略错误不是正确的做法 - 这是肯定的 ;)

关于java - Observable.concat 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49281456/

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