Класс Future
Класс Future используется для представления значения,
которое будет получено позже, в результате выполнения
асинхронной операции. Объект этого класса может находиться
в одном из трех состояний: ожидание, успешное завершение
или ошибка. Для получения результата используются методы
then и catchError, а также ключевые слова
async и await.
Синтаксис
Future<T> future = Future.value(T value);
Future<T> future = Future.delayed(Duration duration, [T computation()]);
Future<T> future = Future.error(Object error);
Пример
Давайте создадим объект Future с уже готовым
значением и получим его через метод then:
void main()
{
Future<String> future = Future.value('abcde');
future.then((value) {
print(value);
});
}
Результат выполнения кода:
"abcde"
Пример
Давайте создадим Future, который выполнится
с задержкой, и дождемся его результата с помощью
await:
Future<void> main() async
{
Future<int> future = Future.delayed(
Duration(seconds: 1),
() => 12345
);
int res = await future;
print(res);
}
Результат выполнения кода:
12345
Пример
Давайте создадим Future с ошибкой и обработаем
ее через метод catchError:
void main()
{
Future<int> future = Future.error('Error message');
future.catchError((error) {
print('Caught: $error');
});
}
Результат выполнения кода:
"Caught: Error message"
Смотрите также
-
метод
then,
который обрабатывает результат Future -
метод
catchError,
который обрабатывает ошибки Future -
метод
wait,
который ожидает завершения нескольких Future -
класс
Completer,
который позволяет вручную завершать Future