async и await в Dart
Оператор await читает готовое значение из
Future. Его можно писать только внутри
функции, помеченной async - иначе
компилятор не разрешит такую запись.
Точку входа main для учебных примеров
тоже делают async, чтобы внутри вызвать
await. После загрузки строки ее
выводят через print:
Future<String> load() async {
return "note";
}
void main() async {
var text = await load();
print(text);
}
Пока load() не завершится, main
не перейдет к print. Снаружи программы
очередь событий может обслуживать другие
колбэки, но порядок строк в этой async
функции сохраняется.
Несколько await подряд задают цепочку
шагов: каждый следующий ждет предыдущий:
Future<String> first() async => "co";
Future<String> second() async => "de";
void main() async {
var partA = await first();
var partB = await second();
print(partA + partB);
}
Объявите async-функцию load(),
которая возвращает "ok". В main
с async получите строку через
await и выведите ее.
Сделайте Future<Employee>
fetch() с полем name
"Kim". В main дождитесь
сотрудника и напечатайте name.