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