Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Реактивное программирование / await / Exercises / Дождитесь supply
Решение: Дождитесь supply
Вот один из возможных вариантов решения задачи.
Код
my $sensor = Supply.from-list(18, 21, 19, 23);
my $last = await $sensor;
say "final reading: $last";🦋 Исходный код можно найти в файле await-a-supply.raku.
Вывод
final reading: 23Комментарии
Ожидание supply блокирует выполнение, пока поток не выдаст всё, что у него есть, — то самое «ждать до завершения», которое
awaitдаёт и для промиса, — а его значением становится последнее, что выдал supply, то есть23.Это подходит для потока, в котором важно лишь конечное состояние, например для последнего показания датчика. Если же вам нужно каждое значение, это работа для
.tapили блокаreact, как в предыдущих разделах.