Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Reaktive Programmierung / Live- und On-Demand-Supplies

Live-Supplies

Ein Live-Supply sendet Werte, sobald sie auftreten, an die Zapfstellen, die in diesem Augenblick zuhören. Sie erzeugen eines mit einem Supplier: Der Supplier ist die Sendeseite, und sein .Supply ist die Empfangsseite, die andere anzapfen.

my $supplier = Supplier.new;
my $supply   = $supplier.Supply;

my @got;
$supply.tap(-> $v { @got.push($v) });

$supplier.emit(1);
$supplier.emit(2);

say @got; # [1 2]

Hier schiebt .emit einen Wert in das Live-Supply, und jede derzeitige Zapfstelle erhält ihn. Die Zapfstelle war vor den Aussendungen da, sie hat also beide Werte eingefangen.

Der entscheidende Unterschied zu einem On-demand-Supply ist die Zeit: Ein Live-Supply erinnert sich nicht an vergangene Werte. Eine nach einem emit hinzugefügte Zapfstelle verpasste alles, was vor ihrem Abonnement ausgesandt wurde. Live-Supplies sind das richtige Modell für echte Ereignisse — Klicks, Nachrichten, Sensormesswerte —, bei denen „was gerade geschieht“ zählt und die Vergangenheit vorbei ist.

Kurz: Nehmen Sie ein On-demand-Supply, um jedem Abonnenten eine feste Folge erneut abzuspielen, und ein Live-Supply (über einen Supplier), um Ereignisse zu senden, sobald sie geschehen.

Kursnavigation

Quiz — Arten von Supply   |   Live-Supplies in Aktion


💪 Oder springen Sie direkt zu den Übungen dieses Abschnitts.