2017-09-15 41 views
0

我有一个服务豆,我写的,它看起来像这样返回从服务豆前途的,在播放做Ok.sendEntity /斯卡拉

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]

我该如何处理?

回答

2

使用Action.async

def downloadLocalBackup(name: String) = Action.async { 
    myStream(name) map { fileStream => 
    Ok.sendEntity(fileStream) 
    } 
} 

从游戏文件:

当我们使用Action.apply构建器方法建立到现在为止的行动 ,发送异步结果,我们需要使用 Action.async建造者方法:

https://www.playframework.com/documentation/2.6.x/ScalaAsync

+0

谢谢,我从文档中错过了那个基本的东西多么愚蠢! – curiousengineer