Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Reaktive Programmierung / await / Exercises / Warten Sie auf ein Promise
Lösung: Warten Sie auf ein Promise
Hier ist eine mögliche Lösung der Aufgabe.
Code
my @jobs =
(start { sleep 0.3; 'slow' }),
(start { sleep 0.1; 'quick' }),
(start { sleep 0.2; 'medium' });
say await @jobs;🦋 Du findest den Quellcode in der Datei await-a-promise.raku.
Ausgabe
(slow quick medium)Kommentare
Alle drei Aufgaben starten zugleich und schlafen nebenläufig, das ganze Programm dauert also rund
0.3Sekunden — die Dauer der langsamsten Aufgabe, nicht die Summe aller drei.Obwohl
quickzuerst fertig ist undslowzuletzt, lautet die Ausgabe(slow quick medium):awaitliefert jedes Ergebnis an derselben Stelle wie sein Promise in@jobs. Die Reihenfolge der Fertigstellung beeinflusst nur, wannawaitzurückkehrt, nie die Anordnung der Ergebnisse.