我是Play和Scala的新手。我正在尝试使用Play和Scala构建应用程序。我需要在内部进行post调用以从我的服务器获取数据。但这应该是同步的。从此帖子请求中获取数据后,我需要将该数据发送到前端。我见过很多资源,但都是异步的。请帮帮我。
我从 DB 获取数据,然后应该将数据作为响应返回。
数据库位于远程服务器而非托管服务器中。
答案 0 :(得分:2)
我认为你不应该阻止。
def action = Action.async {
WS.url("some url")
.post(Json.toJson(Map("query"->query)))
.map { response =>
val jsonResponse = response.json
// in this place you have your response from your call
// now just do whatever you need to do with it,
// in this example I will return it as `Ok` result
Ok(jsonResponse)
}
}
只需映射您的通话结果,然后将其修改为Future
,并使用Action.async
的{{1}}。
如果您真的想阻止使用Future
,请导入
Await.result(future, 5 seconds)
答案 1 :(得分:0)
所有请求都是异步的,但没有任何内容阻止您等待代码中的await
响应。
val response = await(yourFutureRequest).body
上面写的这一行将会阻止,直到将来结束。