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

Функция any

Функция any класса Future принимает список фьючеров и возвращает новый Future, который завершается успешно, как только первый из переданных фьючеров завершится с результатом. В первый параметр мы передаем список фьючеров Iterable<Future<T>>, результат которых нужно проверить. Если хотя бы один фьючер завершится успешно, возвращаемый фьючер завершится его значением. Если все фьючеры завершатся с ошибкой, возвращаемый фьючер завершится последней ошибкой.

Синтаксис

Future.any(futures)

Пример

Давайте создадим два фьючера с разной задержкой и проверим, какой из них завершится первым:

void main() { Future<String> first = Future.delayed( Duration(seconds: 2), () => 'first' ); Future<String> second = Future.delayed( Duration(seconds: 1), () => 'second' ); Future.any([first, second]).then((value) { print(value); }); }

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

"second"

Пример

Давайте проверим, что произойдет, если один из фьючеров завершится с ошибкой, а другой успешно:

void main() { Future<String> success = Future.delayed( Duration(seconds: 2), () => 'success' ); Future<String> failure = Future.delayed( Duration(seconds: 1), () => throw Exception('error') ); Future.any([success, failure]).then( (value) => print(value), onError: (error) => print('Error: $error') ); }

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

"success"

Пример

Давайте проверим поведение функции, когда все фьючеры завершаются с ошибкой:

void main() { Future<String> first = Future.delayed( Duration(seconds: 1), () => throw Exception('first error') ); Future<String> second = Future.delayed( Duration(seconds: 2), () => throw Exception('second error') ); Future.any([first, second]).then( (value) => print(value), onError: (error) => print('Error: $error') ); }

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

"Error: Exception: second error"

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

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