Könnten Sie mir bitte es in einer besseren Art und Weise schreiben helfen:Scala Loswerden von verschachtelten Futures
Future {
Thread sleep 200
5
} onComplete{
case Success(e) => Future {
doSomething(e)
Thread sleep 200
6
} onComplete {
case Success(e) =>
Future {
doSomething(e)
Thread sleep 200
} onComplete {
case Success(_) => println("finished")
case Failure(e) => e.printStackTrace()
}
case Failure(e) => e.printStackTrace()
}
case Failure(e) => e.printStackTrace()
}
Jetzt ist der Code sieht schlecht aus, und wenn ich mehr Futures auf diese Weise hinzugefügt würde es noch schlimmer geworden ... Dies ist offensichtlich ein Beispiel, um das Problem zu zeigen, daher würde ich es begrüßen, einen größeren Zusammenhang zu erwähnen.
@update Wenn es nicht klar genug ist, werde ich versuchen, zu klären. Ich habe drei Futures und möchte das erste ausführen, wenn es fertig ist, führe das zweite aus, wenn es fertig ist - das dritte. Die zweite Zukunft verwendet das Ergebnis der ersten und die dritte verwendet das Ergebnis der zweiten. Wenn einer der Futures fehlschlägt, wird die Stapelverfolgung gedruckt und die Ruffolge bricht ab. Dies ist, was ich im obigen Code zeigen wollte, und ich möchte es, wenn möglich, auf bessere, nicht verschachtelte Weise erreichen.
@update 2 Es wäre auch toll, wenn ich Ausfall jeder Zukunft separat
Es ist nicht klar, was Sie erreichen möchten – mfirry
ok, ich aktualisierte die Frage –