Курс 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 у дії →
💪 Або перейдіть одразу до вправ цього
розділу.