Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Реактивно програмиране / Живи supply и supply при поискване
Живи supply
Живият поток излъчва стойностите в момента на случването им
към онези включвания, които слушат в този миг.
Създавате такъв с Supplier: доставчикът е изпращащата
страна, а неговият .Supply е приемащата страна, към която
се включват другите.
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]Тук .emit тласка стойност в живия поток и всяко текущо
включване я получава. Включването беше налице преди подаванията, така че
то улови и двете стойности.
Решаващата разлика спрямо потока при поискване е времето: живият
поток не помни минали стойности. Включване, добавено
след emit, би пропуснало всичко, подадено преди абонирането
му. Живите потоци са правилният модел за истински събития — щраквания,
съобщения, показания на датчици, — където има значение „какво се случва
сега“, а миналото е отминало.
Накратко: използвайте поток при поискване, за да пуснете фиксирана
последователност на всеки абонат, и жив поток (чрез
Supplier), за да излъчвате събития в момента на случването
им.
Навигация в курса
← Тест — Видове supply | Живи supply в действие →
💪 Или преминете направо към упражненията в този
раздел.