Spec-Zone.ru › Dart 2

dart:async

Метод map<S>

Stream<S> map<S>(
  1. S convert(
    1. T event
    )
)

Преобразует каждый элемент этого потока в новое событие потока.

Создает новый поток, который преобразует каждый элемент этого потока в новое значение с помощью функции convert, и выводит результат.

Для каждого события данных, o, в этом потоке, возвращаемый поток предоставляет событие данных со значением convert(o). Если convert вызывает исключение, возвращаемый поток сообщает об этом как об ошибке.

События об ошибках и завершении передаются в возвращаемый поток без изменений.

Возвращаемый поток является потоком широковещательной передачи, если этим потоком является таковым. Функция convert вызывается один раз на каждое событие данных для каждого слушателя. Если к потоку широковещательной передачи обращаются более одного раза, каждое подписка будет по-отдельности вызывать convert для каждого события данных.

В отличие от transform, этот метод не обрабатывает поток как части одного значения. Вместо этого каждое событие преобразуется независимо от предыдущих и последующих событий, что может не всегда быть правильным. Например, кодирование или декодирование UTF-8 даст неправильные результаты, если пара суррогатов или многобайтовое кодирование UTF-8 разделено на отдельные события, и эти события пытаются закодировать или декодировать независимо.

Пример:

final stream =
    Stream<int>.periodic(const Duration(seconds: 1), (count) => count)
        .take(5);

final calculationStream =
    stream.map<String>((event) => 'Square: ${event * event}');
calculationStream.forEach(print);
// Square: 0
// Square: 1
// Square: 4
// Square: 9
// Square: 16

Реализация

Stream<S> map<S>(S convert(T event)) {
  return new _MapStream<T, S>(this, convert);
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-async/Stream/map.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API