【发布时间】:2020-04-26 04:41:43
【问题描述】:
如何在未来的地图链中间返回一个 Left,然后让未来失败?我发送一个例子来澄清一下。
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
object TestApp extends App {
final case class Message(statusCode: Int, data: String)
final case class Success(data: String)
final case class Failure()
val msg = Message(500, "My data")
val future = Future { msg }
def getMessage(future: Future[Message]): Future[Either[Failure, Success]] = {
future.map { msg =>
// Evaluate msg here - if failure, make this feature fail and then return Left(Failure), otherwise, continue in the chain
msg
}.map(_.data).map(data => Right(Success(data)))
}
}
【问题讨论】: