我正在尝试为我的 Action 完成 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] 的成员