如何将 AnyPublisher return 类型的两个方法调用解析为一个?
How to resolve two method calls with AnyPublisher return type into one?
我有两个签名相同的方法func getItems() -> AnyPublisher<[Item], AppError>
。
第一个是从存储中获取项目,第二个是从 Internet 中获取项目。
如何将这样的逻辑添加到具有相同 return 类型的第三个方法,如果第一个方法成功完成我 return storage.getItems()
,如果没有我 return network.getItems()
?
如果从 storage.getItems()
返回的发布者在项目不存在时出错,那么您可以“捕获”错误并改为发出新的发布者:
func getItems() -> AnyPublisher<[Item], AppError> {
storage.getItems()
.catch { err in
// check the err, if you need to
network.getItems()
}
.eraseToAnyPublisher()
}
我有两个签名相同的方法func getItems() -> AnyPublisher<[Item], AppError>
。
第一个是从存储中获取项目,第二个是从 Internet 中获取项目。
如何将这样的逻辑添加到具有相同 return 类型的第三个方法,如果第一个方法成功完成我 return storage.getItems()
,如果没有我 return network.getItems()
?
如果从 storage.getItems()
返回的发布者在项目不存在时出错,那么您可以“捕获”错误并改为发出新的发布者:
func getItems() -> AnyPublisher<[Item], AppError> {
storage.getItems()
.catch { err in
// check the err, if you need to
network.getItems()
}
.eraseToAnyPublisher()
}