Scala:基于未来的#future未来

时间:2016-02-01 07:51:22

标签: scala playframework playframework-2.0 future

<AssemblyVersion>会返回WS.post,但我想要一个Future[Response],所以我为此目的使用Future[Data]

Future.collect

但是,有时private def getDataFuture(data: String): Future[JsValue] = initAuthenticatedRequest().post(body).collect { case response => response.json(0) }.recoverWith { case NonFatal(_) => getDataFuture(data) } 会返回一个错误的值,因为我收到一个空的json。我预计这会导致Future失败并执行response.json(0),但这并没有发生。

我是否需要在收集案例中进行分支? 我怎样才能更优雅地处理这个问题?我想,未来会有这方面的规定。

1 个答案:

答案 0 :(得分:1)

您必须使用

initAuthenticatedRequest().post(body).map(_.json.as[JsArray])

json.as[JsArray]将json强制转换为JsArray或抛出异常,可以使用recoverWith

处理