Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Reactief programmeren / Live- en on-demand-supplies

Live-supplies

Een live supply zendt waarden zodra ze optreden uit naar de taps die op dat moment luisteren. Je maakt er een met een Supplier: de supplier is de verzendkant, en zijn .Supply is de ontvangstkant die anderen aftappen.

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 duwt .emit een waarde de live supply in, en elke huidige tap ontvangt haar. De tap zat er vóór de uitzendingen, dus ving hij beide waarden op.

Het cruciale verschil met een on-demand-supply is timing: een live supply onthoudt geen eerdere waarden. Een tap die na een emit toegevoegd wordt, zou missen wat vóór zijn abonnement uitgezonden is. Live supplies zijn het juiste model voor echte gebeurtenissen — kliks, berichten, sensormetingen — waar “wat er nu gebeurt” ertoe doet en het verleden weg is.

Kort gezegd: gebruik een on-demand-supply om een vaste reeks voor elke abonnee opnieuw af te spelen, en een live supply (via een Supplier) om gebeurtenissen uit te zenden zodra ze gebeuren.

Cursusnavigatie

Quiz — Soorten supply   |   Live-supplies in actie


💪 Of ga direct naar de oefeningen in deze sectie.