Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Реактивно програмиране / await / Exercises / Изчакайте обещание
Решение: Изчакайте обещание
Ето едно възможно решение на задачата.
Код
my @jobs =
(start { sleep 0.3; 'slow' }),
(start { sleep 0.1; 'quick' }),
(start { sleep 0.2; 'medium' });
say await @jobs;🦋 Намерете програмата във файла await-a-promise.raku.
Изход
(slow quick medium)Коментари
И трите задачи тръгват наведнъж и спят паралелно, така че цялата програма отнема около
0.3секунди — продължителността на най-бавната задача, а не сумата от трите.Макар
quickда приключва първа, аslowпоследна, изходът е(slow quick medium):awaitвръща всеки резултат на същата позиция, на която е неговото обещание в@jobs. Редът на приключване влияе само върху това когаawaitсе връща, а не върху подредбата на резултатите.