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

Метод drain

Метод drain класса Stream подписывается на поток, полностью его опустошает и возвращает объект Future, который завершается, когда исходный поток закрывается. Все события данных из потока при этом игнорируются. В первый параметр мы передаем необязательное значение futureValue, которое будет использовано как результат завершения возвращаемого Future. Второй необязательный параметр cancelOnError указывает, нужно ли отменить подписку при первой ошибке потока.

Синтаксис

stream.drain([futureValue, cancelOnError])

Пример

Давайте создадим поток из списка чисел и опустошим его с помощью метода drain:

void main() { Stream<int> stream = Stream.fromIterable([1, 2, 3, 4, 5]); stream.drain().then((_) { print('Stream drained'); }); }

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

"Stream drained"

Пример

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

void main() { Stream<String> stream = Stream.fromIterable(['a', 'b', 'c', 'd', 'e']); stream.drain('done').then((res) { print(res); }); }

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

"done"

Пример

Давайте опустошим поток и дождемся завершения с помощью await:

void main() async { Stream<int> stream = Stream.periodic( Duration(seconds: 1), (int i) => i ).take(3); await stream.drain(); print('All events ignored'); }

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

"All events ignored"

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

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