Функция wait
Функция wait ожидает завершения
всех переданных Future и возвращает
новый Future, который завершится списком
результатов этих Future. Первым параметром
функция принимает итерируемый набор Future,
вторым - необязательный параметр cleanUp,
который вызывается для каждого Future
при возникновении ошибки. Если хотя бы один
из Future завершится с ошибкой, то результирующий
Future также завершится с ошибкой.
Синтаксис
Future.wait(futures, [cleanUp])
Пример
Давайте дождёмся завершения нескольких Future и получим список их результатов:
void main()
{
Future<int> f1 = Future.value(1);
Future<int> f2 = Future.value(2);
Future<int> f3 = Future.value(3);
Future.wait([f1, f2, f3]).then((List<int> res) {
print(res);
});
}
Результат выполнения кода:
[1, 2, 3]
Пример
Давайте дождёмся завершения Future, которые выполняются с задержкой:
void main()
{
Future<String> f1 = Future.delayed(
Duration(seconds: 1), () => 'abcde'
);
Future<String> f2 = Future.delayed(
Duration(seconds: 2), () => '12345'
);
Future.wait([f1, f2]).then((List<String> res) {
print(res);
});
}
Результат выполнения кода:
["abcde", "12345"]
Пример
Давайте обработаем ошибку, если один из Future завершился неудачно:
void main()
{
Future<int> f1 = Future.value(1);
Future<int> f2 = Future.error('error');
Future<int> f3 = Future.value(3);
Future.wait([f1, f2, f3]).then((List<int> res) {
print(res);
}).catchError((Object error) {
print('Caught: $error');
});
}
Результат выполнения кода:
"Caught: error"
Смотрите также
-
метод
any,
который ожидает завершения любого Future -
метод
then,
который обрабатывает результат Future -
метод
catchError,
который обрабатывает ошибку Future -
класс
Future,
который представляет отложенное значение