Pure不是Play Framework中客观承诺的成员

时间:2014-12-30 15:29:12

标签: scala playframework playframework-2.0

我正在学习如何使用Scala和PlayFramework来完成我正在做的项目。由于我的目标类似于此blog中提供的目标,因此我将代码置于其中。但是,在尝试复制该代码时,我发现此错误

def stats( id: String ) = WebSocket.async[JsValue] { request =>
  Hosts.hosts.find( _.id == id ) match {
    case Some( host ) => Statistics.attach( host )
    case None => {
      val enumerator = Enumerator
        .generateM[JsValue]( Promise.timeout( None, 1.second ) )
        .andThen( Enumerator.eof )
      Promise.pure( ( Iteratee.ignore[JsValue], enumerator ) )
    }
  }

}

错误说值Pure不是对象play.api.libs.concurrent.Promise 的成员,我最初认为,因为这段代码是基于较旧版本的Play,所以有些东西已经改变了。然而,我去检查更改日志和Promise似乎大部分没有变化,根据文档Pure仍然是它的成员。这可能是一件非常简单的事情,但对此我不熟悉我对此错误发生的原因相对困惑,因为代码应该经过试用和测试,并且仍然与此版本兼容。

1 个答案:

答案 0 :(得分:4)

那是使用较旧版本的Play库。 Promise.pure在2.2.x中已弃用,已在2.3.x中删除。您可以改为使用scala.concurrent.Future.successful

Future.successful( ( Iteratee.ignore[JsValue], enumerator ) )