将Scala Future转换为Twitter Future [英] convert Scala Future to Twitter Future
本文介绍了将Scala Future转换为Twitter Future的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将Finagle用作Web服务器,我想从我的应用程序逻辑中返回Scala-Futures.当然,如何以非阻塞方式将scala.concurrent.Future转换为com.twitter.util.Future?
I use Finagle as a web server which I want to return Scala-Futures from my application logic. How to convert scala.concurrent.Future to com.twitter.util.Future, in a non-blocking way of course?
推荐答案
没有足够的环境对此进行测试,但这是我为"com.twitter" %% "finagle-http" % "6.25.0"
编写的内容:
Have not enough environment to test this, but here is what i write for "com.twitter" %% "finagle-http" % "6.25.0"
:
import com.twitter.{util => twitter}
import scala.concurrent.{ExecutionContext, Promise, Future}
import scala.util.{Failure, Success, Try}
import language.implicitConversions
object TwitterConverters {
implicit def scalaToTwitterTry[T](t: Try[T]): twitter.Try[T] = t match {
case Success(r) => twitter.Return(r)
case Failure(ex) => twitter.Throw(ex)
}
implicit def twitterToScalaTry[T](t: twitter.Try[T]): Try[T] = t match {
case twitter.Return(r) => Success(r)
case twitter.Throw(ex) => Failure(ex)
}
implicit def scalaToTwitterFuture[T](f: Future[T])(implicit ec: ExecutionContext): twitter.Future[T] = {
val promise = twitter.Promise[T]()
f.onComplete(promise update _)
promise
}
implicit def twitterToScalaFuture[T](f: twitter.Future[T]): Future[T] = {
val promise = Promise[T]()
f.respond(promise complete _)
promise.future
}
}
这篇关于将Scala Future转换为Twitter Future的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文