4

我正在学习 Scala。我曾经使用 Play Framework 2 Java 并尝试使用和学习 Scala 重写我以前的一些工作。

我需要做一个同步 WS 请求并在我的代码中的某个地方从中获取结果对象。

当我回到 Java 时,我曾经这样做过:

WS.url("someurl").get().get(5000);

或者T Promise<T>.get(Long timeout)确切地说。

自从我切换到 Scala 后,我现在正在使用play.api.libs.ws并将代码重写为:

val somefuture:Future[Response] = WS.url("someurl").get();

但我无法同步从Future[Response]获得响应!scala上没有方法。.get()

如何Response从同步中获取对象Future[Response]

4

2 回答 2

9

使用Await.result.

import scala.concurrent.duration._
import scala.concurrent.Await

....

val future: Future[Response] = ...
Await.result(future, 10 seconds): Response
于 2013-04-30T09:45:57.687 回答
2

使用 .map 并返回异步结果。看看这个例子:

https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/play-scala/app/controllers/Application.scala#L44

于 2013-05-01T03:41:45.317 回答