Raku kurss / Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana / Reaktīvā programmēšana / await / Solījuma gaidīšana

Viktorīna — await un sleep

Ko dara šī programma?

my $p = start { sleep 2; 42 };
say 'waiting';
say await $p;
1Uzreiz izdrukā waiting, tad apmēram divas sekundes vēlāk izdrukā 42
0Apstājas uz divām sekundēm, tad izdrukā waiting un 42 kopā
0Izdrukā waiting un 42 uzreiz — miegs notiek fonā
0Izdrukā waiting, tad Promise — guļošu solījumu gaidīt nevar

start atgriež solījumu tūlīt — bloks ar savu sleep izpildās fona pavedienā. Tāpēc say 'waiting' nostrādā uzreiz. Bloķē tieši await: programma tur apstājas, līdz fona bloks pabeidz savu divu sekunžu snaudu un rada 42, ko tad izdrukā. Pauze pieder await rindai, nevis start rindai.

Kursa navigācija

Viktorīna — await   |   Pabeigšanas gaidīšana