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

Метод timeout

Метод timeout класса Future позволяет ограничить время ожидания результата асинхронной операции. В первый параметр мы передаём объект Duration, задающий максимальное время ожидания. Во второй необязательный параметр можно передать функцию onTimeout, которая вызывается при истечении времени ожидания. Если функция не передана, при превышении времени будет выброшено исключение TimeoutException.

Синтаксис

future.timeout(duration, [onTimeout])

Пример

Давайте создадим Future, который завершится через 3 секунды, и установим таймаут в 1 секунду. Так как операция не успеет завершиться, сработает функция onTimeout:

void main() { Future<String> future = Future.delayed( Duration(seconds: 3), () => 'abcde' ); future.timeout( Duration(seconds: 1), onTimeout: () => 'timeout' ).then((value) { print(value); }); }

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

"timeout"

Пример

Давайте создадим Future, который завершится через 1 секунду, и установим таймаут в 3 секунды. Операция успеет завершиться до истечения времени:

void main() { Future<String> future = Future.delayed( Duration(seconds: 1), () => 'abcde' ); future.timeout( Duration(seconds: 3), onTimeout: () => 'timeout' ).then((value) { print(value); }); }

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

"abcde"

Пример

Если не передавать функцию onTimeout, то при истечении времени ожидания будет выброшено исключение TimeoutException. Давайте обработаем его с помощью catchError:

void main() { Future<String> future = Future.delayed( Duration(seconds: 3), () => 'abcde' ); future.timeout( Duration(seconds: 1) ).then((value) { print(value); }).catchError((error) { print('Error: $error'); }); }

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

"Error: TimeoutException after 0:00:01.000000: Future not completed"

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

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