谱写未来与尝试
Composing Future and Try
这是我之前 question
的后续
假设我有一个函数,其中 returns 一个 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)
。你会如何解决它?
您可以使用 fromTry:
val x = slowAsync(1) flatMap (s => Future.fromTry(mayFail(s)))
这是我之前 question
的后续假设我有一个函数,其中 returns 一个 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)
。你会如何解决它?
您可以使用 fromTry:
val x = slowAsync(1) flatMap (s => Future.fromTry(mayFail(s)))