玩框架2斯卡拉WS做一个同步请求(Play Framework 2 Scala WS Doing a

2019-09-01 11:11发布

我学习Scala。 我以前用的播放框架2的Java,并试图重写一些我以前的使用和学习Scala的工作。

我需要做同步WS请求,并在我的代码从它那里得到结果对象的某个地方。

当我回来在Java中,我用来做这样的:

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

或与T Promise<T>.get(Long timeout)是精确的。

由于我切换到斯卡拉,我现在用play.api.libs.ws和我重写代码:

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

但我不能让从未来的[回应] syncly 响应 ! 没有.get()上阶方法。

我怎样才能得到Response从对象Future[Response] syncly?

Answer 1:

使用Await.result

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

....

val future: Future[Response] = ...
Await.result(future, 10 seconds): Response


Answer 2:

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

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



文章来源: Play Framework 2 Scala WS Doing a Sync Request