<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)
,但这并没有发生。
我是否需要在收集案例中进行分支? 我怎样才能更优雅地处理这个问题?我想,未来会有这方面的规定。
答案 0 :(得分:1)
您必须使用
initAuthenticatedRequest().post(body).map(_.json.as[JsArray])
json.as[JsArray]
将json强制转换为JsArray
或抛出异常,可以使用recoverWith