Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Реактивное программирование / Живые supply и supply по требованию

Supply по требованию

Supply по требованию производит свои значения заново для каждого подключения. Supply.from-list работает по требованию: каждое подключение получает всю последовательность с самого начала, независимо от остальных подключений.

my $s = Supply.from-list(1, 2, 3);

my @a;
my @b;
$s.tap(-> $v { @a.push($v) });
$s.tap(-> $v { @b.push($v) });

say @a; # [1 2 3]
say @b; # [1 2 3]

Оба подключения получили все три значения. Supply не «израсходовал» свои значения на первом подключении — он просто отработал заново для второго. Именно такое поведение нужно, когда supply представляет фиксированный источник — список, файл, запрос, — который каждый подписчик должен увидеть целиком.

Для supply, построенных из уже существующих данных, режим «по требованию» установлен по умолчанию, потому что каждый потребитель естественным образом ожидает полную последовательность. Другой вид — живой supply — ведёт себя совсем иначе, как показано в следующей теме.

Практика

Пройдите 1 тест по содержанию этой темы.

Навигация по курсу

Живые supply и supply по требованию   |   Тест — Виды supply


💪 Или перейдите сразу к упражнениям этого раздела.