scala.concurrent.Future是否具有开箱即用的功能?

时间:2015-05-07 02:08:23

标签: scala future

所以我经常发现自己编写了这个辅助函数,最后厌倦了它并决定询问它。我想要的功能是根据异常"抛出"将失败的Future映射到另一个失败的Future。

Future是否具有此功能,而我还没有找到它?

object FutureUtils {
  implicit class FutureWrapper[T](val fut: Future[T]) extends AnyVal {
    def mapFailure(f: PartialFunction[Throwable, Throwable])(implicit ec: ExecutionContext) = {
      val p = Promise[T]()
      fut onComplete {
        case Success(a) ⇒ p success a
        case Failure(e) ⇒ p failure f.applyOrElse(e, (t: Throwable) ⇒ t)
      }
      p.future
    }
  }
}

0 个答案:

没有答案