忽视理解失败的未来

时间:2017-08-10 20:28:55

标签: scala future for-comprehension

我对所有进行远程服务调用(REST,RPC等等)的期货有所了解。如果其中一个未来失败,整个理解会失败吗?

例如,假设我有两个进行服务呼叫的期货

val service1Future: Future[Response] = ...
val service2Future: Future[Response] = ...

我们假设service2Future还有一些recoverWith会引发异常PartialFunction[Throwable, Future[U]]

如果service2Future失败,我真的不在乎。我能否在理解中加强这一点?

for {
    service1Response <- service1Future
    service2Response <- service2Future
} yield {
    // do stuff with service1Response, but I want to get here even if service2Future fails
}

1 个答案:

答案 0 :(得分:1)

是的,如果第二个未来未按照书面形式失败,整个理解将会失败。这项工作会简单吗?

for {
  service1Response <- service1Future
  service2Response <- service2Future.recoverWith(...)
} yield {
  ...
}