Курс 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


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