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