0

我有一个带有AnyPublisher<Void, Error>签名的发布者,我想在函数中执行该签名并返回一些内容以指示发布者是失败还是成功。我正在尝试找出使用什么技术来运行发布者并返回结果。

一种是像这样传入完成闭包和接收器:

func runPublisher(completion: (Error?) -> Void) {
    cancellable = MyPublisher()
                    .sink(receiveCompletion: { result in
                              switch result {
                                  case .finished: completion(nil)
                                  case .failure(let error): completion(error)
                              }
                          }, 
                          receiveValue: { _ in })
)

但我觉得有更好的方法来做到这一点。主要是我将空闭包传递给.sink(...).

我可以只返回一个,AnyPublisher<Void, Error>但这只是将错误检查责任传递给调用代码。

那么有没有更好的方法来编写这样的函数?一些我没有注意到的组合功能?函数的不同签名?

4

0 回答 0