Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Reactief programmeren / await / Wachten op een promise
Quiz — await en sleep
Wat doet het volgende programma?
my $p = start { sleep 2; 42 };
say 'waiting';
say await $p;| 1 | Drukt meteen waiting af en ongeveer twee seconden later 42 |
| 0 | Pauzeert twee seconden en drukt daarna waiting en 42 samen af |
| 0 | Drukt waiting en 42 meteen af — de sleep gebeurt op de achtergrond |
| 0 | Drukt waiting af en daarna Promise — een slapende promise kun je niet afwachten |
start geeft meteen een promise terug —
het blok, met zijn sleep, draait op een achtergrondthread.
Dus say 'waiting' wordt onmiddellijk uitgevoerd. Het is
await dat blokkeert: het programma pauzeert daar tot het
achtergrondblok zijn dutje van twee seconden voltooid heeft en
42 oplevert, dat daarna afgedrukt wordt. De pauze hoort bij
de regel met await, niet bij de regel met
start.