i.a*_*iel 5 scala playframework-2.0
使用Playframework时,我有时会遇到这种情况:
def myFunction:Future[String] = {
// Do some stuff
}
myFunction.onComplete {
case Success(myString) => // Du Stuff
case Failure(error) => // Error handling
}
Run Code Online (Sandbox Code Playgroud)
但正如Scala文档中所述,Future.onComplete返回一个单元.当Action函数例如期望一个时,如何在Playframework中使用它们SimpleResult?处理期货的最佳做法是什么?
编辑:我应该补充一点,我正在使用Play-2.2.x分支,它已经为Scala Future交易了Play Future.
你可以使用Async:
def index = Action{
val myFunction:Future[Option[String]] = //
Async{
myFunction.map{
case Some(x) => Ok(x)
case None => InternalServerError
}
}
}
Run Code Online (Sandbox Code Playgroud)
基本上你告诉play:每当myFunction评估时,将结果返回给User.这里的诀窍是map对Future内容而不是使用回调,这使您可以对结果进行操作.
美妙的部分是它仍然是异步的.从某种意义上说,http请求线程评估索引不会被阻止.
这里有一些文档.
| 归档时间: |
|
| 查看次数: |
4829 次 |
| 最近记录: |