Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Reaktiva programado / Vivaj kaj laŭpetaj supply
Vivaj supply
Viva supply elsendas valorojn laŭ ilia okazo al kiuj ajn
konektoj aŭskultas en tiu momento. Vi kreas ĝin per
Supplier: la provizanto estas la sendflanko, kaj ĝia
.Supply estas la ricevflanko, al kiu aliaj konektiĝas.
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]Ĉi tie .emit puŝas valoron en la vivan supply, kaj ĉiu
aktuala konekto ricevas ĝin. La konekto estis surloke antaŭ la eligoj,
do ĝi kaptis ambaŭ valorojn.
La decida diferenco de laŭpeta supply estas tempeco: viva supply
ne memoras pasintajn valorojn. Konekto aldonita post
emit maltrafus tion, kio estis eligita antaŭ ol ĝi abonis.
Vivaj supply estas la ĝusta modelo por veraj eventoj — klakoj, mesaĝoj,
sensilaj legaĵoj — kie «kio okazas nun» gravas kaj la pasinteco estas
for.
Mallonge: uzu laŭpetan supply por represpekti fiksitan sinsekvon al
ĉiu abonanto, kaj vivan supply (per Supplier) por elsendi
eventojn laŭ ilia okazo.
Kursa navigado
← Kvizo — Specoj de supply | Vivaj supply en ago →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.