Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Реактивне програмування / await / Вправи / Дочекайтеся промиса
Розв’язання: Дочекайтеся промиса
Ось одне з можливих розв’язань задачі.
Код
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повернеться, а не на розташування результатів.