代码之家  ›  专栏  ›  技术社区  ›  Davide Icardi i3arnon

将IgniteFuture转换为Scala Future

  •  0
  • Davide Icardi i3arnon  · 技术社区  · 7 年前

    可以转换 IgniteFuture 给一个 Scala Future ?

    我写了以下代码:

    class ScalaIgniteFuture[T](future: IgniteFuture[T]) {
      def toFuture: Future[T] = {
        val result = Promise[T]
        future
          .listen(f => {
            result.tryComplete(Try{
              f.get()
            })
          })
    
        result.future
      }
    }
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   Nagarjuna Pamu    7 年前

    是的,但是你可以用 implicit 类模式来扩展API。

    import scala.util.Try
    
    implicit class IgniteFutureUtils[T](igniteFuture: IgniteFuture[T]) {
     def toScalaFuture = {
       val promise = Promise[T]()
       igniteFuture.listen { k =>
         promise.tryComplete(Try(k.get))
       }
       promise.future
     } 
    }
    
    推荐文章