Ich versuche Futures in Scala zu verketten, aber es gibt mir den falschen Rückgabetyp.
Ich habe die folgenden Methoden:
%Vor% Aber jetzt bekomme ich den Fehler, dass der getUUIDRecordByModel
Rückgabetyp Future[Option[FlightByDetailModel]]
Wie kette ich sie richtig?
Ich würde stattdessen flatMap
verwenden.
andThen
wendet eine Nebeneffektfunktion an und gibt das Original Future
zurück, nicht das innere.
Diese Lösung und die 2 darüber sind im Grunde gleich. Sie schlagen die einfache Antwort der Zusammensetzung von flatMaps vor. Das ist gut für einmalige Lösungen.
%Vor%Ich vermute, dass Sie angesichts der Methodensignaturen diese Strategie sehr oft verwenden werden. Wenn dies der Fall ist, wird die obige Antwort von Eugene Zhulenev empfohlen (die eine funktionellere Lösung darstellt). Thought Monad Transformers können auf den ersten Blick ein wenig einschüchternd wirken, der Code-Block hier:
%Vor%Ist sehr einfach und skalierbar, wenn Sie Komplexität hinzufügen. Hoffentlich hilft dir das.
Sie können es gut mit Scalaz-Monade-Transformatoren tun, genauer gesagt mit OptionT. Sie können schöne Reihe von Artikeln schöpfen, und spezifischer benötigen Sie diese: Ссылка
Dieser ist gut zu: Ссылка
%Vor%Um optionT mit scala.concurrent.Future verwenden zu können, müssen die Functor- und Monad-Instanzen im Bereich
liegen %Vor%Eine einfache Lösung ist die Verwendung von flatMap für die Zusammensetzung anstelle von und dann, die eher für den Umgang mit Nebenwirkungen spezialisiert ist:
%Vor%Für die Arbeit mit Futures fand ich es hilfreich, diese Seite mehrmals zu lesen.