Spec-Zone.ru › Dart 1

dart:async

Конструктор-фабрика Stream.eventTransformed

Stream.eventTransformed(Stream source, EventSink mapSink(EventSink<T> sink))

Создаёт поток, где все события существующего потока передаются через преобразование вводного хранилища.

Переданное mapSink замыкание вызывается, когда к возвращаемому потоку происходит подписка. Все события из source добавляются в хранилище событий, которое возвращается из вызова. Преобразование помещает все преобразованные события в хранилище, которое mapSink замыкание получило во время своего вызова. По сути, mapSink создаёт преобразовательную трубу, входным хранилищем которой является возвращаемое EventSink, а выходным — хранилище, которое оно получило.

Этот конструктор часто используется для построения преобразователей.

Пример использования для дублирующего преобразователя:

class DuplicationSink implements EventSink<String> {
  final EventSink<String> _outputSink;
  DuplicationSink(this._outputSink);

  void add(String data) {
    _outputSink.add(data);
    _outputSink.add(data);
  }

  void addError(e, [st]) { _outputSink.addError(e, st); }
  void close() { _outputSink.close(); }
}

class DuplicationTransformer implements StreamTransformer<String, String> {
  // Some generic types ommitted for brevety.
  Stream bind(Stream stream) => new Stream<String>.eventTransformed(
      stream,
      (EventSink sink) => new DuplicationSink(sink));
}

stringStream.transform(new DuplicationTransformer());

Возвращаемый поток является потоком широковещательной передачи, если source таковым является.

Источник

factory Stream.eventTransformed(
    Stream source, EventSink mapSink(EventSink<T> sink)) {
  return new _BoundSinkStream(source, mapSink);
}

© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-async/Stream/Stream.eventTransformed.html

Spec-Zone.ru

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