Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Nebenläufige Programmierung / Promises

start und await

Das Schlüsselwort start führt einen Block im Hintergrund aus und liefert sofort ein Promise:

my $p = start { 2 + 2 };

Die Arbeit geschieht auf Rakus Threadpool, während Ihr Programm weiterläuft. Um das Ergebnis zu bekommen, nehmen Sie await, das auf das Ende des Promise wartet und Ihnen seinen Wert gibt:

my $p = start { 2 + 2 };
say await $p; # 4

await blockiert genau so lange, wie das Promise braucht, und liefert dann, was der Block erzeugt hat — hier 4. Ist die Arbeit schon fertig, wenn Sie abwarten, bekommen Sie das Ergebnis sofort.

Dieses Paar — start zum Starten, await zum Abholen — ist der Kern der auf Promises gestützten Nebenläufigkeit. Sie können mehrere Stücke Arbeit starten, sie zugleich laufen lassen und ihre Ergebnisse abwarten, wenn Sie so weit sind, und genau darauf baut das nächste Thema auf.

Praxis

Lösen Sie 1 Quiz zum Inhalt dieses Themas.

Kursnavigation

Promises   |   Quiz — Promises


💪 Oder springen Sie direkt zu den Übungen dieses Abschnitts.