Ich habe eine Future[Either[A, B]]
und eine Funktion, die eine Future[C]
von einer B
bereitstellt.Zukunft [entweder [A, B]] bis Zukunft [Entweder [A, C]] mit einer (B => Future [C]) Funktion
Ich muss die Future[Either[A, B]]
zu Future[Either[A, C]]
umwandeln.
Gibt es einen direkten Weg, um die Future[Either[A, C]]
und nicht eine Future[Either[A, Future[C]]]
zu bekommen?
Ich denke an so etwas wie:
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)
Es ist nur Pseudo-Code seit service.getValue(e.right)
nicht kompiliert. Was wäre der richtige Weg, dies zu tun?
Dank. Es muss nur als ein Recht zurückgegeben werden: bToFC (r) .map (Right (_)) –
@Alban: yep, bearbeitet das in – Daenyth
Wenn Sie 'Future.successful' anstelle von' Future.apply' verwenden, werden Sie vermeiden Erstellen von 'Left (e)' in einem Thread-Pool. –