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

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

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

Синтаксис

Future<Type> functionName(parameters) async { // body }

Пример

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

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

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

5

Пример

Асинхронная функция без возвращаемого значения имеет тип Future<void>. Давайте вызовем такую функцию и дождемся ее завершения:

Future<void> showMessage() async { print('start'); await Future.delayed(Duration(seconds: 1)); print('end'); } void main() async { await showMessage(); }

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

"start" "end"

Пример

Асинхронную функцию можно вызвать и без await - тогда она вернет объект Future, который можно обработать через метод then:

Future<String> getStr() async { return 'abcde'; } void main() { getStr().then((res) { print(res); }); }

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

"abcde"

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

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