Курс по 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 | Изчакайте обещание →
💪 Или преминете направо към упражненията в този
раздел.