Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Конкурентне програмування / Промиси / Вправи / З’єднайте промиси в ланцюжок

Розв’язання: З’єднайте промиси в ланцюжок

Ось одне з можливих розв’язань задачі.

Код

my $p = start { 'raku' };
my $q = $p.then({ .result.uc });
my $r = $q.then({ .result ~ '!' });
say await $r;

🦋 Знайдіть програму у файлі promise-result.raku.

Вивід

RAKU!

Коментарі

  1. Кожен .then будує нову обіцянку, що виконується, щойно завершиться попередня. Усередині її блоку .result є значенням, яке дала попередня обіцянка.

  2. Перше продовження переводить 'raku' у 'RAKU'; друге додає '!'. Очікування останньої обіцянки, $r, проходить увесь ланцюжок і дає 'RAKU!' — невеличкий конвеєр, у якому кожен крок перетворює результат попереднього.

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

З’єднайте промиси в ланцюжок   |   Дочекайтеся кількох