Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Reaktiva programado / await / Atendi promeson

Kvizo — await kaj sleep

Kion faras la jena programo?

my $p = start { sleep 2; 42 };
say 'waiting';
say await $p;
1Presas waiting tuj, poste presas 42 ĉirkaŭ du sekundojn poste
0Paŭzas dum du sekundoj, poste presas waiting kaj 42 kune
0Presas waiting kaj 42 tuj — la dormo okazas fone
0Presas waiting, poste Promise — vi ne povas atendi dormantan promeson

start redonas promeson tuj — la bloko, kun sia sleep, kuras sur fona fadeno. Do say 'waiting' plenumiĝas senprokraste. Estas await, kiu blokas: la programo paŭzas tie, ĝis la fona bloko finas sian dusekundan dormeton kaj produktas 42, kiu tiam estas presata. La paŭzo apartenas al la linio await, ne al la linio start.

Kursa navigado

Kvizo — await   |   Atendi la finon