Ich habe einige Code, der für einen einfachen Fall (2 Futures) funktioniert, aber ich kann nicht den Weg finden, es für eine unbegrenzte Anzahl von Futures zu verallgemeinern.Zusammensetzung der bedingten Futures in Scala
Ich möchte Code erstellen, der eine Zukunft aufruft, und, wenn diese Zukunft abgeschlossen ist, eine andere anrufen, und wenn diese abgeschlossen ist, eine andere anrufen, und so weiter.
Ich brauche das Ergebnis jedes Anrufs vor dem Aufruf des nächsten Anrufs abgeschlossen zu sein, da ich es möglicherweise nicht erneut aufrufen muss (dies ist meine Stoppbedingung).
Ich weiß, dass dies explizit mit Rekursion gelöst werden kann, aber ich möchte, wenn überhaupt möglich, eine Lösung für das Verständnis und/oder Falten. Ich denke, dass es eine solche Lösung geben muss, aber ich kann sie nicht richtig schreiben.
Hier aa Funktion, die ich mag komponieren unendlich viele solche Futures und kommen sie alle am Ende (eine einzige Zukunft einer Liste)
aa Liste von zwei zufällig Intsdef nextValue: Future[List[Int]] = Future{
Thread.sleep(1000)
val num1 = Random.nextInt(10)
val num2 = Random.nextInt(10)
List(num1,num2)
}
Jetzt erzeugt
bin ich Aufruf await.result nur für Testzwecke
Dies funktioniert für 2 l Evels, aber wie man es für N Anrufe verallgemeinert?
Await.result({
nextValue.flatMap{ value1 =>
nextValue.map{ value2 =>
value1 ++ value2
}
}
},1.minute)
Wenn jedes 'Future' erst nach dem vorherigen gestartet wird, was bringt es,' Future' überhaupt zu verwenden? Könntest du eine "Falte" oder einen "Stream" in eine einzelne "Zukunft" wickeln, die fertiggestellt wird, wenn die Stoppbedingung erfüllt ist? – jwvh