Mic*_*ael 3 scala exception-handling future
这是我上一个问题的后续行动
假设我有一个函数,它返回Future[String]一个函数和一个函数String => Try[Int]:
val slowAsync : Int => Future[String] = ...
val mayFail : String => Try[Int] = ...
Run Code Online (Sandbox Code Playgroud)
假设我正在编写它们以创建一个新函数Int => Future[Int]:
val composed : Int => Future[Int] = {x =>
for (str <- slowAsync(x); y <- Future(mayFail(s).get)) yield y
}
Run Code Online (Sandbox Code Playgroud)
将composed可能是工作,但我不喜欢这样Future(mayFail(s).get).你会怎么解决它?
你可以使用fromTry:
val x = slowAsync(1) flatMap (s => Future.fromTry(mayFail(s)))
Run Code Online (Sandbox Code Playgroud)