【发布时间】:2017-03-09 12:42:59
【问题描述】:
我有一个包含许多业务逻辑的控制器,我想将代码移动到 Action.async 代码块中。此代码有效,如何将 Action.async 内部的代码移至另一个类(服务)?:
def tweetsnew(query: String) = Action.async {
// Move From Here...
credentials.map {
case (consumerKey, requestToken) =>
ws.url("https://api.twitter.com/1.1/search/tweets.json")
.sign(OAuthCalculator(consumerKey, requestToken))
.withQueryString("q" -> query)
.withQueryString("max_id" -> "833342796736167936")
.get().map { twitterResponse =>
if (twitterResponse.status == 200) {
// Here There Are More Complex Logic
Ok("That is fine: "+twitterResponse.body)
} else {
throw new Exception(s"Could not retrieve tweets for $query query term")
}
}
}.getOrElse {
Future.failed(new Exception("You did not correctly configure the Twitter credentials"))
}
//....To Here. To Another Class
}
我已经检查了与 create a Future[Result] 相关的文档,但我无法确定该函数返回的类型与 Action.async 期望的类型相同。
【问题讨论】:
-
感谢@vdebegue,这是一个很好的解决方案。我想提出另一种解决方案。
标签: scala asynchronous playframework controller playframework-2.5