我正在尝试处理从DataTaskPublisher
读取其响应状态代码而来的响应。
[当状态码大于299时,我想返回ServiceError
类型作为失败。在我看到的每个示例中,我都使用.mapError
和.catch
...在这种特定情况下,我从.flatMap
中确实不知道如何处理发布者的响应以返回ErrorTResponse
...]
return URLSession.DataTaskPublisher(request: urlRequest, session: .shared)
.mapError{error in return ServiceError.request}
.flatMap{ data, response -> AnyPublisher<TResponse, ServiceError> in
if let httpResponse = response as? HTTPURLResponse,
(200...299).contains(httpResponse.statusCode){
return Just(data)
.decode(type: TResponse.self, decoder: JSONDecoder())
.mapError{error in return ServiceError.decode}
.eraseToAnyPublisher()
}else{
//???? HOW TO HANDLE THE ERROR?
}
}
.receive(on: RunLoop.main)
.eraseToAnyPublisher()
我正在尝试处理从DataTaskPublisher读取其响应状态代码的响应。当状态码大于299时,我想将ServiceError类型返回为Failure。在...