Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Конкурентне програмування / Промиси / Вправи / З’єднайте промиси в ланцюжок
Розв’язання: З’єднайте промиси в ланцюжок
Ось одне з можливих розв’язань задачі.
Код
my $p = start { 'raku' };
my $q = $p.then({ .result.uc });
my $r = $q.then({ .result ~ '!' });
say await $r;🦋 Знайдіть програму у файлі promise-result.raku.
Вивід
RAKU!Коментарі
Кожен
.thenбудує нову обіцянку, що виконується, щойно завершиться попередня. Усередині її блоку.resultє значенням, яке дала попередня обіцянка.Перше продовження переводить
'raku'у'RAKU'; друге додає'!'. Очікування останньої обіцянки,$r, проходить увесь ланцюжок і дає'RAKU!'— невеличкий конвеєр, у якому кожен крок перетворює результат попереднього.