Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Concurrent programmeren / Promises

start en await

Het sleutelwoord start draait een blok op de achtergrond en geeft meteen een Promise terug:

my $p = start { 2 + 2 };

Het werk gebeurt op Raku’s threadpool terwijl je programma doorloopt. Om het resultaat te krijgen gebruik je await, dat wacht tot de promise klaar is en je haar waarde geeft:

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

await blokkeert precies lang genoeg voor de voltooiing van de promise en geeft daarna terug wat het blok opleverde — hier 4. Als het werk al klaar is tegen de tijd dat je afwacht, krijg je het resultaat meteen.

Dit paar — start om te starten, await om op te halen — vormt de kern van op promises gebaseerde concurrency. Je kunt meerdere stukken werk starten, ze tegelijk laten lopen, en hun resultaten afwachten wanneer je er klaar voor bent, en precies daarop bouwt het volgende onderwerp voort.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Promises   |   Quiz — Promises


💪 Of ga direct naar de oefeningen in deze sectie.