作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个从数据库中检索数据并返回 Future[ResponseDTO] 类型的函数,然后我需要将它转换为 HttpResponse 的 Future
我的代码:
val responseDTO = database.getResponseDto(service) => Future[ResponseDTO]
responseDTO.onComplete {
case Success(responseDTO) => HttpResponse(status = responseDTO.responseCode, entity = responseDTO.responsePayload)
case Failure(exception) => HttpError("error")
}
responseDTO.map(
dto => EitherT.pure[Future, HttpError](HttpResponse(status = dto.responseCode, entity = dto.responsePayload))
)
最佳答案
使用 transform
应该给出你想要的答案:
responseDTO.transform {
case Success(responseDTO) => Success(HttpResponse(status = responseDTO.responseCode, entity = responseDTO.responsePayload))
case _ => Success(HttpError("error"))
}
Future
其结果类型与
HttpResponse
兼容和
HttpError
.
Future
的状态来执行此操作。 .在这种情况下,您的代码将使用
transform
的替代版本。 , 像这样:
case class HttpErrorException(err: HttpError) extends Throwable
responseDTO.transform(
responseDTO => HttpResponse(status = responseDTO.responseCode, entity = responseDTO.responsePayload),
_ => HttpErrorException(HttpError("error"))
)
Future
其余代码中用于提取
HttpResponse
的方法或
HttpErrorException
在需要的时候。
关于scala 如何将一种类型的 future 转换为另一种类型的 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56086035/
我是一名优秀的程序员,十分优秀!