【发布时间】:2019-12-23 21:54:28
【问题描述】:
我有这样的代码
func request(request: URLRequest) -> AnyPublisher<Data, Error> {
return Just(request)
.flatMap { request in
RequestManager.request(request) // returns AnyPublisher<Data, Error>
}
.eraseToAnyPublisher()
}
我收到编译错误:
实例方法 flatMap(maxPublishers:_:) 需要类型 Just.Failure (aka Never) 和 Error 是等价的
很清楚,因为Just 有Never 作为Failure 和.flatMap 需要Error 作为Failure,所以Never != Error
我看到了两种方法:
使用 right Publisher,而不是
Just,但我没有找到合适的人选。使用
.mapError、.mapError { $0 as Error }等运算符,但我不确定这是不是个好主意。
有什么方法可以处理吗?
更新:
使用起来更有意义
.setFailureType(to: Error.self)
或
.mapError { $0 as Error }
【问题讨论】: