Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Реактивно програмиране / await

Изчакване на завършване

await е изричният начин да чакате, но реактивният код също чака — само че неявно. Блокът react не приключва, докато не приключат всички потоци от стойности, които следи, а това ви дава същата гаранция „всичко е приключило“:

my @values;

react {
    whenever Supply.from-list(2, 4, 6) {
        @values.push($_);
    }
}

say [+] @values; # 12

say се изпълнява едва след като блокът react е приключил, така че @values вече съдържа всяка подадена стойност. На практика блокът react е изчакал потока вместо вас.

Това е полезен подход: използвайте блок react, за да съберете всичко, което потокът подава, а после работете със събрания резултат на следващия ред, уверени, че потокът е завършен. Дали чакате обещание с await, или поток със react, принципът е един и същ — спри, докато паралелната работа приключи, после продължи с резултатите ѝ.

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

Тест — await и sleep   |   Изчакайте обещание


💪 Или преминете направо към упражненията в този раздел.