我正在嘗試爲我的Action完成Promise [String]。到目前爲止,我已閱讀Play的異步編程文檔http://www.playframework.com/documentation/2.0/ScalaAsync,但有些東西我沒有收到 - 或者文檔錯誤:)在Scala和Play2中完成與異步的承諾[T]
下面是我的代碼大綱。我的意圖是返回一個Promise [String]並在我的Action中完成。 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」我想我是做同樣的事情,不是嗎?
問題是,我讓我的異步{}塊內的編譯錯誤:
值映射不是scala.concurrent.Promise成員[字符串]
其原因的變化是,斯卡拉2.10現在被使用,它得到了一個未來/無極API作爲標準庫的一部分。現在玩遊戲使用它而不是自己的實現。 – johanandren
不知道這是否相關,但我運行Scala 2.9.1,因爲它只在Ubuntu 12.04上可用。 –
Play包含它自己捆綁的Scala版本,因此您甚至不需要安裝Scala就能夠編碼play/scala。 – johanandren