Finagleを使うときに出てくるので、そのメモ書き。
随時更新します。
Future
自体は同期的
com.twitter.util.Future
は「計算がまだ完了していない可能性がある」ことを示す単なるモナドなので、非同期処理機構自体は分離されていて、Future
自体は非同期では動かない。
com.twitter.util.Future.applyの挙動を参照。
Future.apply
と Future.value
APIドキュメントにも記述があるが、Future.value
は定数(constant value)をFuture
でリフトすることを明示的に示すもの。
Future.value("hogefuga")
一方、Future.apply
は計算自体をFuture
でリフトするもの。これには Exception
などをラップする機能がある。
def func: String = throw new Exception
val future = Future(func)
future.isThrow // => true