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

Ключевое слово async

Ключевое слово async ставится после списка параметров функции или метода и превращает ее в асинхронную. Такая функция всегда возвращает объект Future, даже если внутри нее написано return с обычным значением. Внутри асинхронной функции становится доступным ключевое слово await, которое приостанавливает выполнение до завершения переданного Future, не блокируя при этом основной поток программы.

Если функция помечена как async, но не содержит return, она вернет Future<void>. Если содержит return со значением, это значение автоматически оборачивается в Future.

Синтаксис

Future<Type> functionName() async { // тело функции }

Пример

Давайте создадим простую асинхронную функцию, которая возвращает строку:

Future<String> getString() async { return 'abcde'; } void main() async { String res = await getString(); print(res); }

Результат выполнения кода:

"abcde"

Пример

Давайте используем await внутри асинхронной функции для ожидания результата другой асинхронной функции:

Future<int> getNumber() async { return 42; } Future<void> printNumber() async { int res = await getNumber(); print(res); } void main() async { await printNumber(); }

Результат выполнения кода:

42

Пример

Давайте обработаем ошибку внутри асинхронной функции с помощью try и catch:

Future<String> getData() async { throw Exception('Something went wrong'); } void main() async { try { String res = await getData(); print(res); } catch (e) { print('Error: $e'); } }

Результат выполнения кода:

"Error: Exception: Something went wrong"

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

  • ключевое слово await,
    которое ожидает завершения Future
  • функция scheduleMicrotask,
    которая планирует выполнение микрозадачи
  • функция unawaited,
    которая явно игнорирует Future
  • раздел async,
    посвященный асинхронному программированию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить