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


💪 Или преминете направо към упражненията в този раздел.