Scala Future到Twitter的未来转换无法正常工作

时间:2019-11-27 14:43:38

标签: scala twitter concurrency future scala-finch

我也在尝试使用io.finch将Scala的Future转换为Twitter Future。 这段代码有效,因为我直接创建了Twitter Future:

  val getMerchants: Endpoint[String] = get("stringEndpoint") {
    val f = returnGarbage
    f.map(Ok(_))
  }

  def returnGarbage: TwitterFuture[String] = {
    TwitterFuture.value("Potatoes")
  }

但是当我创建一个Scala Future并尝试将其转换为Twitter Future无法正常工作时,请求未完成会一直等待响应,但未给出响应。

  val getMerchants: Endpoint[String] = get("stringEndpoint") {
    val f = returnGarbage
    f.map(Ok(_))
  }

  def returnGarbage: TwitterFuture[String] = {
    ScalaFuture.value("Potatoes").asTwitterFuture
  }

这是asTwitterFuture方法:

implicit class SFutureOps[A](sf: ScalaFuture[A]) {
 def asTwitterFuture(implicit ec: ExecutionContext): TwitterFuture[A] = {
   val p = Promise[A]()
   sf.onComplete {
     case Failure(error) => p.setException(error)
     case Success(v) => p.setValue(v)
   }
   p
 }
}

我也尝试使用Twitter双射库将其转换,但是得到了相同的结果。 不知道如果有人可以帮助我为什么它不起作用,那会很好。 谢谢!

0 个答案:

没有答案