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

Конструктор periodic

Конструктор periodic класса Stream создает поток, который периодически испускает события через заданный интервал времени. В первый параметр мы передаем длительность интервала (объект Duration), через который будут генерироваться события. Второй параметр - это функция, которая вызывается при каждом событии и возвращает значение, попадающее в поток.

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

Синтаксис

Stream.periodic(Duration duration, [T computation(int computationCount)])

Пример

Давайте создадим поток, который каждую секунду испускает числа от 0 до 4, а затем завершим его:

import 'dart:async'; void main() { Stream<int> stream = Stream.periodic( Duration(seconds: 1), (int count) { if (count >= 5) { return null; } return count; } ); stream.listen( (int value) { print(value); }, onDone: () { print('Stream completed'); } ); }

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

0 1 2 3 4 "Stream completed"

Пример

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

import 'dart:async'; void main() { Stream<String> stream = Stream.periodic( Duration(milliseconds: 500), (int count) => 'abcde' ); stream.take(3).listen( (String value) { print(value); } ); }

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

"abcde" "abcde" "abcde"

Пример

Давайте создадим поток, который каждую секунду испускает числа, умноженные на 2, и остановим его через 3 секунды с помощью отмены подписки:

import 'dart:async'; void main() { Stream<int> stream = Stream.periodic( Duration(seconds: 1), (int count) => count * 2 ); StreamSubscription<int> subscription = stream.listen( (int value) { print(value); } ); Future.delayed(Duration(seconds: 3), () { subscription.cancel(); print('Subscription cancelled'); }); }

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

0 2 4 "Subscription cancelled"

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

  • класс Stream,
    который представляет собой поток событий
  • метод listen,
    который подписывается на события потока
  • метод take,
    который берет первые n событий потока
  • метод cancel,
    который отменяет подписку на поток
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить