Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Реактивно програмиране / react и whenever
Supply, дефинирани отвън
Всеки whenever досега създаваше потока си точно там, в
заглавието — whenever Supply.from-list(...). Това се чете
добре за бърз пример, но истинските програми рядко имат източника си на
събития под ръка точно на това място. По-често потокът се изгражда
другаде — връща го функция, произвежда го Supplier или ви
го подава сокет или таймер — и пристига като обикновена променлива.
whenever следи именуван поток също толкова охотно:
my $sensors = Supply.from-list(18, 21, 19);
my $messages = Supply.from-list('hi', 'bye');
react {
whenever $sensors {
say "temperature: $_";
}
whenever $messages {
say "message: $_";
}
}Това отпечатва:
temperature: 18
temperature: 21
temperature: 19
message: hi
message: byeЗатова четете whenever $sensors { … } като „щом потокът
$sensors — откъдето и да е дошъл — подаде стойност, изпълни
това тяло“. Вграденият whenever Supply.from-list(...),
който видяхте по-рано, е просто частният случай, в който източникът се
създава на място.
Ако тази форма „външен блок с вътрешни блокове“ ви напомня нещо, вие
сте прави — следващата
страница я сравнява с given/when.
Навигация в курса
← Тест — whenever и done | whenever и when →
💪 Или преминете направо към упражненията в този
раздел.