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

  1. Alle drei Aufgaben starten zugleich und schlafen nebenläufig, das ganze Programm dauert also rund 0.3 Sekunden — die Dauer der langsamsten Aufgabe, nicht die Summe aller drei.

  2. Obwohl quick zuerst fertig ist und slow zuletzt, lautet die Ausgabe (slow quick medium): await liefert jedes Ergebnis an derselben Stelle wie sein Promise in @jobs. Die Reihenfolge der Fertigstellung beeinflusst nur, wann await zurückkehrt, nie die Anordnung der Ergebnisse.

Kursnavigation

Warten Sie auf ein Promise   |   Warten Sie auf ein Supply