Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Реактивно програмиране / react и whenever
whenever
Един блок react може да съдържа няколко
блока whenever, всеки от които следи различен поток. Блокът
откликва на онзи поток, който подаде стойност следващ, изпълнявайки
съответното тяло:
my $sum = 0;
react {
whenever Supply.from-list(1, 2, 3) {
$sum += $_;
}
whenever Supply.from-list(10, 20) {
$sum += $_;
}
}
say $sum; # 36И двата потока се следят наведнъж. Стойностите им —
1, 2, 3 и 10, 20 — всички се вливат в
$sum, който завършва на 36. Блокът
react приключва едва когато и двата потока
свършат.
Всеки whenever откликва независимо, така че точно така
съчетавате струи: по един whenever на източник, всички
вътре в един и същ react. Истинска програма би могла да
следи мрежова връзка в един whenever и таймер в друг,
откликвайки на всеки в момента на пристигане на събитията му.
В тялото на whenever разполагате с подадената стойност
(като $_ или като именуван параметър) и можете да правите с
нея каквото поискате — да обновите състояние, да подадете нещо в друг
поток или дори да затворите блока react предсрочно с
done.
Практика
Направете 2 теста върху съдържанието на тази тема.
Навигация в курса
← Тест — react | Тест — whenever →
💪 Или преминете направо към упражненията в този
раздел.