2017-09-15 7 views
0

でOk.sendEntityをやって、私は私が書いたサービスBeanを持っており、それは私のようにそれを使用することができる午前私のコントローラでこのサービス豆から未来を返すと、再生/ Scalaの

def myStream(name: String): HttpEntity.Streamed = { 

} 

次のようになります。

私のコントローラで次に

def myStream(name: String):Future[HttpEntity.Streamed] = { 

} 

、以下のコードのように私は私のサービスメソッドのシグネチャを変更したい

def myControllerHandler(id: Name) = Action { 
    Ok.sendEntity(myStream(id)) 
} 

コンパイルに失敗し、私はそれがアクションResultタイプではなく、Future[Result]を取ることができますので、これが失敗

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

理由がある動作させるための方法を見つけることができません。

どうすれば対処できますか?

答えて

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

関連する問題