Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Конкурентне програмування / Промиси

start і await

Ключове слово start виконує блок у фоні й негайно повертає Promise:

my $p = start { 2 + 2 };

Робота відбувається в пулі потоків Raku, поки ваша програма йде далі. Щоб отримати результат, скористайтеся await, який чекає завершення обіцянки й дає вам її значення:

my $p = start { 2 + 2 };
say await $p; # 4

await блокує виконання рівно настільки, щоб обіцянка встигла завершитися, а потім повертає те, що дав блок, — тут 4. Якщо на момент очікування роботу вже виконано, ви отримуєте результат одразу.

Ця пара — start для запуску, await для збирання — є ядром конкурентності на обіцянках. Ви можете запустити кілька шматків роботи, дати їм виконуватися водночас і дочекатися їхніх результатів, коли будете готові, — саме на цьому й будує наступна тема.

Практика

Виконайте 1 тест за змістом цієї теми.

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

Промиси   |   Тест — Промиси


💪 Або перейдіть одразу до вправ цього розділу.