Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
471 of 724 menu
◀ ▶

Оператор await

Оператор await используется внутри асинхронных функций, помеченных ключевым словом async. Он приостанавливает дальнейшее выполнение функции до тех пор, пока переданный ему объект Future не завершится, и возвращает результат этого Future. Если Future завершается успешно, await возвращает его значение. Если Future завершается с ошибкой, то ошибка выбрасывается в точке вызова await, и её можно перехватить с помощью try и catch.

Оператор await принимает один параметр - объект типа Future, результат которого нужно дождаться. Возвращаемое значение имеет тот же тип, что и результат этого Future.

Синтаксис

await future;

Пример

Давайте дождёмся завершения Future, который возвращает число, и выведем результат в консоль:

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

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

5

Пример

Давайте дождёмся завершения Future, который возвращает строку, и выведем её в консоль:

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

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

"abcde"

Пример

Давайте дождёмся завершения Future, который возвращает список, и выведем его в консоль:

Future<List<int>> getList() { return Future.value([1, 2, 3, 4, 5]); } void main() async { List<int> res = await getList(); print(res); }

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

[1, 2, 3, 4, 5]

Пример

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

Future<int> getError() { return Future.error('something went wrong'); } void main() async { try { int res = await getError(); print(res); } catch (e) { print(e); } }

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

"something went wrong"

Пример

Давайте дождёмся завершения двух Future последовательно и сложим их результаты:

Future<int> getFirst() { return Future.value(1); } Future<int> getSecond() { return Future.value(2); } void main() async { int a = await getFirst(); int b = await getSecond(); int res = a + b; print(res); }

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

3

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

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