Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Реактивне програмування / react і whenever
whenever і when
Форма блоку react може здатися знайомою. Зовнішній блок,
що містить кілька внутрішніх блоків, кожен з яких діє на тему
$_, — це рівно те, як записують given/when.
Якби ви мали один-єдиний показ температури замість цілого їх струменя,
ви розгалужувалися б на ньому так:
given $temperature {
when 18 { say 'cool' }
when 21 { say 'warm' }
}Схожість із react/whenever справжня, але ці
двоє роблять зовсім різну роботу:
given/whenобробляє одне значення, просто зараз.givenвстановлює$_в одне значення; коженwhenперевіряє його ($_ ~~ 18), виконується перший збіг, і блок завершено. Це звичайна синхронна умова.react/wheneverобробляє багато значень, у часі.wheneverне перевіряє$_проти зразка — він підписується на потік значень, і його тіло виконується на кожне значення, яке цей потік видає, коли б те значення не надійшло. Усіwheneverживі водночас, аreactі далі блокує виконання, аж поки не завершиться кожен їхній потік.
Тож when питає «чи збігається це одне значення?», тоді
як whenever каже «для кожного значення, яке цей струмінь
колись видасть, роби це». Той самий кістяк, але зовсім різні життя:
гілка, узята один-єдиний раз, проти реакції, що виконується знову й
знову, коли надходять події.
Навігація курсом
← Supply, оголошені ззовні | Два таймери →
💪 Або перейдіть одразу до вправ цього
розділу.