Курс 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)

Коментарі

  1. Усі три завдання стартують водночас і сплять конкурентно, тож уся програма забирає близько 0.3 секунди — тривалість найповільнішого завдання, а не суму всіх трьох.

  2. Хоча quick завершується першим, а slow останнім, виводом є (slow quick medium): await повертає кожен результат на тій самій позиції, що й його обіцянка в @jobs. Порядок завершення впливає лише на те, коли await повернеться, а не на розташування результатів.

Навігація курсом

Дочекайтеся промиса   |   Дочекайтеся supply