Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Reactief programmeren / await / Exercises / Wacht op een promise
Oplossing: Wacht op een promise
Hier is een mogelijke oplossing voor de taak.
Code
my @jobs =
(start { sleep 0.3; 'slow' }),
(start { sleep 0.1; 'quick' }),
(start { sleep 0.2; 'medium' });
say await @jobs;🦋 Je kunt de broncode vinden in het bestand await-a-promise.raku.
Uitvoer
(slow quick medium)Opmerkingen
Alle drie de taken starten tegelijk en slapen gelijktijdig, dus duurt het hele programma ongeveer
0.3seconde — de duur van de traagste taak, niet de som van alle drie.Hoewel
quickals eerste klaar is enslowals laatste, is de uitvoer(slow quick medium):awaitgeeft elk resultaat terug op dezelfde positie als zijn promise in@jobs. De volgorde van voltooiing beïnvloedt alleen wanneerawaitterugkeert, nooit de schikking van de resultaten.