在Playframework中使用Scala Future?
发布时间:2020-12-16 09:49:20 所属栏目:安全 来源:网络整理
导读:使用Playframework时,我有时会遇到这种情况: def myFunction:Future[String] = { // Do some stuff}myFunction.onComplete { case Success(myString) = // Du Stuff case Failure(error) = // Error handling} 但正如Scala文档中所述,Future.onComplete返回
使用Playframework时,我有时会遇到这种情况:
def myFunction:Future[String] = { // Do some stuff } myFunction.onComplete { case Success(myString) => // Du Stuff case Failure(error) => // Error handling } 但正如Scala文档中所述,Future.onComplete返回一个Unit. 编辑:我应该补充一点,我正在使用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 } } } 基本上你告诉play:每当评估myFunction时,将结果返回给User.这里的技巧是映射Future内容而不是使用回调,这使您可以对结果进行操作. 美妙的部分是它仍然是异步的.从某种意义上说,http请求线程评估索引不会被阻止. 关于它的一些文档here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |