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

Метод timeout

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

Синтаксис

stream.timeout(timeLimit, [onTimeout])

Пример

Давайте создадим поток, который испускает события с задержкой, и применим к нему метод timeout с лимитом в 1 секунду:

import 'dart:async'; void main() { Stream<int> stream = Stream.periodic( Duration(seconds: 2), (int count) => count ); stream.timeout(Duration(seconds: 1)).listen( (int value) { print('Value: $value'); }, onError: (Object error) { print('Error: $error'); } ); }

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

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

Пример

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

import 'dart:async'; void main() { Stream<int> stream = Stream.periodic( Duration(seconds: 2), (int count) => count ); stream.timeout( Duration(seconds: 1), onTimeout: (EventSink<int> sink) { sink.add(-1); sink.close(); } ).listen( (int value) { print('Value: $value'); }, onDone: () { print('Stream closed'); } ); }

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

"Value: -1" "Stream closed"

Пример

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

import 'dart:async'; void main() { Stream<int> stream = Stream.fromIterable([1, 2, 3]); stream.timeout(Duration(seconds: 1)).listen( (int value) { print('Value: $value'); }, onDone: () { print('Stream closed'); } ); }

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

"Value: 1" "Value: 2" "Value: 3" "Stream closed"

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

  • класс Stream,
    который представляет поток событий
  • метод handleError,
    который обрабатывает ошибки потока
  • метод listen,
    который подписывается на события потока
  • метод transform,
    который преобразует поток с помощью StreamTransformer
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить