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

Метод whenComplete

Метод whenComplete класса Future позволяет выполнить указанную функцию после завершения Future. При этом неважно, завершился Future успешно или с ошибкой - функция будет вызвана в любом случае. В первый параметр мы передаем функцию обратного вызова, которая будет выполнена после завершения Future. Метод возвращает новый Future, который завершается так же, как и исходный, но только после выполнения переданной функции.

Синтаксис

Future<T> whenComplete(FutureOr<void> action())

Пример

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

void main() { Future.delayed(Duration(seconds: 1), () { return 'success'; }).whenComplete(() { print('Future completed'); }).then((value) { print('Result: $value'); }); }

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

"Future completed" "Result: success"

Пример

Давайте создадим Future, который завершается с ошибкой, и убедимся, что whenComplete все равно выполнится:

void main() { Future.delayed(Duration(seconds: 1), () { throw Exception('Error occurred'); }).whenComplete(() { print('Future completed'); }).catchError((error) { print('Caught: $error'); }); }

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

"Future completed" "Caught: Exception: Error occurred"

Пример

Давайте используем whenComplete для закрытия ресурса после завершения асинхронной операции:

void main() { bool isResourceOpen = true; Future.delayed(Duration(seconds: 1), () { return 'data loaded'; }).whenComplete(() { isResourceOpen = false; print('Resource closed'); }).then((value) { print('Data: $value'); }); }

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

"Resource closed" "Data: data loaded"

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

  • класс Future,
    который представляет результат асинхронной операции
  • метод then,
    который выполняется при успешном завершении Future
  • метод catchError,
    который обрабатывает ошибки Future
  • метод timeout,
    который ограничивает время выполнения Future
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить