从服务bean返回未来并在Play/Scala中执行Ok.sendEntity
我有一个我写的服务bean,它看起来像这样从服务bean返回未来并在Play/Scala中执行Ok.sendEntity,scala,playframework,Scala,Playframework,我有一个我写的服务bean,它看起来像这样 def myStream(name: String): HttpEntity.Streamed = { } 在我的控制器中,我可以将其用作: def myControllerHandler(id: Name) = Action { Ok.sendEntity(myStream(id)) } 我想将我的服务方法的签名更改为 def myStream(name: String):Future[HttpEntity.Streamed] = { }
def myStream(name: String): HttpEntity.Streamed = {
}
在我的控制器中,我可以将其用作:
def myControllerHandler(id: Name) = Action {
Ok.sendEntity(myStream(id))
}
我想将我的服务方法的签名更改为
def myStream(name: String):Future[HttpEntity.Streamed] = {
}
然后在我的控制器中,下面的代码无法编译,我无法找到使其工作的方法
def downloadLocalBackup(name: String) = Action {
myStream(name) map { fileStream =>
Ok.sendEntity(fileStream)
}
}
此操作失败的原因是操作可以采取Result
类型,但不能采取Future[Result]
如何处理它?使用
Action.async
:
def downloadLocalBackup(name: String) = Action.async {
myStream(name) map { fileStream =>
Ok.sendEntity(fileStream)
}
}
从播放文档:
当我们使用操作时。应用
builder方法来构建操作
到目前为止,要发送异步结果,我们需要使用
Action.async
builder方法:
使用
操作。异步
:
def downloadLocalBackup(name: String) = Action.async {
myStream(name) map { fileStream =>
Ok.sendEntity(fileStream)
}
}
从播放文档:
当我们使用操作时。应用
builder方法来构建操作
到目前为止,要发送异步结果,我们需要使用
Action.async
builder方法:
谢谢,我真傻,竟然错过了文档中的基本内容!谢谢,我真傻,竟然错过了文档中的基本内容!