我有两个webservice调用。 Webservice1返回Promise [Option [Model]],Webservice2应该将Model作为参数,然后返回一个Promise [Option [String]]。这是我已经构建我的代码:在进行web服务调用时将Promise [Option [Model]]转换为Promise [Option [String]]
def call1: Promise[Option[Model]] = for {
response1 <- callService1(requestHolderForService1)
} yield {
for {
response <- response1
} yield ParserForResponse(response)
}
之后,这个我想链我的召唤而2这需要从服务1的参数结果:
def call2:Promise[Option[String]] = call1.flatMap{
optionModel => optionModel.flatMap{
model => callService2(requestHolderForService2(model)).map{
service2Option => service2Option.map{
service2Result => ResultParse(service2Result)
}
}
}
}
的问题是,我的电话1返回Promise[Option[Model]]
,而来自电话2的返回需要为Promise[Option[String]]
。这个问题从中间服务呼叫茎
callService2
返回Promise[Option[JsValue]]
,我无法弄清楚从Promise[Option[Model]] -> Promise[Option[JsValue]] -> Promise[Option[String]]
过渡
有人能指出我如何能够以链这两个调用一起使用map还是flatMap?
感谢