Suchen Sie nach dem besten Weg, um eine Kette von Funktionen zu schreiben, die nacheinander async ausführen müssen. In Anbetracht dieser zwei Möglichkeiten:Scala-Stil mit Futures
Option 1
def operation1(): Unit = {...}
def operation2(): Unit = {...}
def foo(): Future[Unit] =
Future {
operation1()
operation2()
} onComplete {case _ => println("done!")}
Option 2
def operation1(): Future[Unit] = {...}
def operation2(): Future[Unit] = {...}
def foo(): Future[Unit] = {
operation1()
.flatMap {case _ => operation2() }
.onComplete {case _ => println("done!")}
}
- Gibt es irgendwelche Vorteile/Nachteile des einen über den anderen?
- Ich glaube, dass die Option 1 die beiden Funktionen auf dem gleichen Hintergrund Thread ausführen wird. Gilt das auch für die Option 2?
- Gibt es irgendwelche guten Praktiken dafür?
eine andere Frage, da diese Funktion:
def foo: Future[A]
wenn ich das Ergebnis Einheit werfen wollen, ist dies der beste Weg, es zu tun:
foo map { _ =>() }
Dank!