Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Реактивное программирование / react и whenever
Блок react
Блок react — это место, где живут реакции. Внутри него
whenever говорит: «всякий раз, когда этот supply выдаёт
значение, выполняй это тело». Затем блок react ждёт, пока
не закончится каждый supply, за которым он следит:
my $sum = 0;
react {
whenever Supply.from-list(1, 2, 3) {
$sum += $_;
}
}
say $sum; # 6Тело whenever выполняется по разу на каждое значение —
1, 2, 3 — и прибавляет его к
$sum. Текущее значение доступно как $_ (его
можно и назвать через -> $v).
Ключевое свойство в том, что react
блокирует выполнение, пока его supply не закончатся.
Только после того как Supply.from-list выдаст все свои
значения, блок react завершится и программа перейдёт к
say. Именно поэтому $sum уже равна
6 к моменту печати: блок react дождался всего потока.
Благодаря этому react — естественное место, чтобы
собрать результаты из потока: устанавливаете реакции, даёте им
доработать до конца и используете собранное дальше.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← react и whenever | Тест — react →
💪 Или перейдите сразу к упражнениям этого
раздела.