Курс 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 у дії


💪 Або перейдіть одразу до вправ цього розділу.