撰写未来并尝试

时间:2015-07-12 09:21:55

标签: scala exception-handling future

这是我之前question

的后续内容

假设我有一个函数,它返回一个Future[String]和一个函数String => Try[Int]

val slowAsync : Int => Future[String] = ...
val mayFail   : String => Try[Int] = ...

假设我正在编写它们以创建一个新函数Int => Future[Int]

val composed : Int => Future[Int] = {x => 
  for (str <- slowAsync(x); y <- Future(mayFail(s).get)) yield y
} 

composed可能有效,但我不喜欢Future(mayFail(s).get)。你会如何解决它?

1 个答案:

答案 0 :(得分:5)

您可以使用fromTry:

val x = slowAsync(1) flatMap (s => Future.fromTry(mayFail(s)))