Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Реактивное программирование / await
Ожидание завершения
await — это явный способ ждать, но реактивный код тоже
ждёт, только неявно. Блок react не завершится, пока не
закончатся все supply, за которыми он следит, а это даёт ту же гарантию
«всё завершилось»:
my @values;
react {
whenever Supply.from-list(2, 4, 6) {
@values.push($_);
}
}
say [+] @values; # 12say выполняется только после того, как
блок react закончил работу, поэтому @values уже содержит
все выданные значения. По сути блок react дождался потока
за вас.
Это полезный приём: соберите блоком react всё, что
выдаёт supply, а затем работайте с собранным на следующей строке, будучи
уверенными, что поток закончился. Ждёте ли вы промис через
await или поток через react — принцип один:
приостановиться, пока конкурентная работа не завершится, а затем
продолжить с её результатами.
Навигация по курсу
← Тест — await и sleep | Дождитесь промиса →
💪 Или перейдите сразу к упражнениям этого
раздела.