加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在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.
当Action函数例如期望SimpleResult时,如何在Playframework中使用它们?处理期货的最佳做法是什么?

编辑:我应该补充一点,我正在使用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读