Оператор await
Оператор await используется внутри асинхронных функций,
помеченных ключевым словом async. Он приостанавливает
выполнение текущей функции до тех пор, пока переданный ему
Future не завершится, и возвращает результат его выполнения.
Если Future завершился с ошибкой, оператор await
выбросит эту ошибку, которую можно перехватить с помощью
try и catch. Оператор await можно применять
только внутри асинхронных функций, иначе возникнет ошибка
компиляции.
Синтаксис
await expression
Пример
Давайте дождёмся выполнения асинхронной функции, которая возвращает число, и выведем результат:
Future<int> getNumber()
{
return Future.value(5);
}
void main() async
{
int res = await getNumber();
print(res);
}
Результат выполнения кода:
5
Пример
Давайте дождёмся выполнения асинхронной функции с задержкой и выведем строку:
Future<String> getString()
{
return Future.delayed(Duration(seconds: 1), () => 'abcde');
}
void main() async
{
String res = await getString();
print(res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте обработаем ошибку, возникшую при выполнении
асинхронной функции, с помощью try и catch:
Future<int> getError()
{
return Future.error('something went wrong');
}
void main() async
{
try
{
int res = await getError();
print(res);
}
catch (e)
{
print('Error: $e');
}
}
Результат выполнения кода:
"Error: something went wrong"