我有两个按预期工作的功能
def getSomething: Promise[JsValue]
def getSomethingElse: Promise[JsValue]
现在我想定义第三个函数 ( def getAll: Promise[JsValue]
),它调用getSomething
然后基于响应返回响应或getSomethingElse
将其响应附加到原始响应。
我目前getAll
定义如下:
def getAll: Promise[JsValue] = {
getSomething flatMap { response:JsValue =>
(response \ "someAttribute").asOpt[String] match {
case None =>
val resultPromise = Promise[JsValue]
resultPromise.redeem(response)
resultPromise
case Some(someAttribute) => getSomethingElse map { moreResponse:JsValue =>
response ++ moreResponse
}
}
}
}
这可行,但想知道是否有更短的方法来完成更规范的 scala 相同的事情?