RxSwift可观察到的对象,它引发catchErrorJustReturn的错误替代方法

问题描述 投票:1回答:1

我正在寻找另一种方法来处理可观察序列引发的错误。

我有一个数据库请求,该请求经常只是抛出DaoError.notFound(意味着未找到数据)。

然后,我正在执行将新数据保存到数据库的Remote API请求,这将导致CoreData通过第一个Observable序列发出新数据。但是,尽管使用RxCoreData,也不会发生。原因是第一个Observable终止于Error。

我可以使用:

catchErrorJustReturn([])但它发出元素的空数组并完成Observable序列,不会再通过此序列发出任何元素。

retry()但挂起重试,这也不是完美的解决方案,因为当没有元素时,我只想显示没有项目的空表视图。

完美的解决方案将以某种方式将错误或映射到空数组,但保持Observable流保持活动状态。但这不会发生。

最简单的解决方案是用返回的空数组替换DaoError.notFound,但是奇怪的是我无法保留错误,并且在某些情况下会创建无限流并忽略错误。

rx-swift rx-cocoa
1个回答
0
投票

这听起来像是catchError(_:)的工作

let myData = database.getData().catchError { api.getData() }
© www.soinside.com 2019 - 2024. All rights reserved.