アクションの Promise[String] を完了しようとしています。これまでのところ、http: //www.playframework.com/documentation/2.0/ScalaAsync で非同期プログラミングに関する Play のドキュメントを読みましたが、得られないものがあります - またはドキュメントが間違っています :)
これが私のコードの概要です。私の意図は、Promise[String] を返し、アクションでそれを完了することです。Promise のコンテンツはさまざまな場所から取得される可能性があるため、Promise[String] を返して Action ハンドラをシンプルにしたいと考えています。
def getJson = Action { request =>
val promiseOfJson = models.item.getJson
Async {
promiseOfJson.map(json => Ok(json))
}
}
def models.item.getJson: Promise[String] = {
val resultPromise = promise[String]
future {
...
resultPromise success "Foo"
}
resultPromise
}
Play のドキュメントと "AsyncResult" を見ると、同じことをしていると思いますよね?
問題は、Async {} ブロック内でコンパイル エラーが発生することです。
値マップは scala.concurrent.Promise[String] のメンバーではありません