Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Реактивне програмування / await
Очікування завершення
await — це явний спосіб чекати, але реактивний код теж
чекає, тільки неявно. Блок react не завершується, доки не
завершаться всі потоки значень, за якими він стежить, а це дає вам ту
саму гарантію «усе завершилося»:
my @values;
react {
whenever Supply.from-list(2, 4, 6) {
@values.push($_);
}
}
say [+] @values; # 12say виконується лише після того, як
блок react завершився, тож @values уже містить
кожне видане значення. По суті, блок react дочекався потоку
значень за вас.
Це корисний підхід: скористайтеся блоком react, щоб
зібрати все, що видає потік значень, а потім працюйте зі зібраним
результатом у наступному рядку, будучи певними, що потік завершено. Чи
чекаєте ви обіцянку через await, чи потік значень через
react, принцип той самий — зупинись, поки конкурентна
робота не завершиться, а потім продовжуй з її результатами.
Навігація курсом
← Тест — await і sleep | Дочекайтеся промиса →
💪 Або перейдіть одразу до вправ цього розділу.