РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
25 of 723 menu

Оператор 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"

Смотрите также

  • ключевое слово async,
    которое объявляет асинхронную функцию
  • ключевое слово return,
    которое возвращает результат из функции
  • оператор yield,
    который возвращает значение из генератора
  • оператор async*,
    который объявляет асинхронный генератор
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить