0

アクションの 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] のメンバーではありません

4

1 に答える 1