如何将两个具有AnyPublisher返回类型的方法调用解析为一个



我有两个具有相同签名func getItems() -> AnyPublisher<[Item], AppError>的方法。第一种是从存储中获取物品,第二种是从互联网获取物品。

如何将这样的逻辑添加到具有相同返回类型的第三个方法中,如果第一个方法成功完成,则返回storage.getItems(),否则返回network.getItems()

如果从storage.getItems()返回的发布者在项目不存在时出错,那么您可以"捕获";错误并发出一个新的发布者:

func getItems() -> AnyPublisher<[Item], AppError> {
storage.getItems()
.catch { err in
// check the err, if you need to
network.getItems()
}
.eraseToAnyPublisher()
}

最新更新