Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Reaktive Programmierung / react und whenever
whenever
Ein einzelner react-Block kann mehrere
whenever-Blöcke enthalten, von denen jeder ein anderes
Supply beobachtet. Der Block reagiert auf dasjenige Supply, das als
nächstes aussendet, und führt den zugehörigen Rumpf aus:
my $sum = 0;
react {
whenever Supply.from-list(1, 2, 3) {
$sum += $_;
}
whenever Supply.from-list(10, 20) {
$sum += $_;
}
}
say $sum; # 36Beide Supplies werden zugleich beobachtet. Ihre Werte —
1, 2, 3 und 10, 20 — fließen alle in
$sum, das bei 36 endet. Der
react-Block ist erst fertig, wenn beide
Supplies fertig sind.
Jedes whenever reagiert unabhängig, und so verbinden Sie
Ströme: ein whenever je Quelle, alle im selben
react. Ein echtes Programm könnte in einem
whenever eine Netzverbindung beobachten und in einem
anderen einen Zeitgeber und auf jedes Ereignis reagieren, sobald es
eintrifft.
Innerhalb eines whenever-Rumpfes haben Sie den
ausgesandten Wert (als $_ oder als benannten Parameter) und
können damit alles tun — Zustand ändern, an ein anderes Supply aussenden
oder den react-Block mit done sogar vorzeitig
schließen.
Praxis
Lösen Sie 2 Quizze zum Inhalt dieses Themas.
Kursnavigation
← Quiz — react | Quiz — whenever →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.