Future[Either[A, B]]
とB
からFuture[C]
を提供する関数があります。未来[B =>未来[C])関数を使用して[A、B]〜未来[A、C]のいずれかです。
Future[Either[A, B]]
をFuture[Either[A, C]]
に変換する必要があります。
Future[Either[A, C]]
を入手する直接の方法はありますが、Future[Either[A, Future[C]]]
はありませんか?
私のようなものを考えている:
val eventuallyInitialValue: Future[Either[A, B]] = ???
val result: Future[Either[A, C]] = for {
e: Either[A, B] <- initialValue
c: C <- service.getValue(e.right)
} yield e.right.map(_ => c)
service.getValue(e.right)
がコンパイルされませんので、それはちょうど擬似コードです。それを行う正しい方法は何でしょうか?
感謝を。 bToFC(r).map(右(_)) –
@Alban:うん、 – Daenyth
で編集しました。「Future.apply」ではなく「Future.successful」を使用すると、スレッドプール上に 'Left(e)'を作成します。 –