當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Dart Stream.eventTransformed用法及代碼示例


dart:async 庫中Stream.eventTransformed 的用法介紹如下。

用法:

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

創建一個流,其中現有流的所有事件都通過sink-transformation 進行管道傳輸。

監聽返回的流時調用給定的 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 extends StreamTransformerBase<String, String> {
  // Some generic types omitted for brevity.
  Stream bind(Stream stream) => Stream<String>.eventTransformed(
      stream,
      (EventSink sink) => DuplicationSink(sink));
}

stringStream.transform(DuplicationTransformer());

如果source 是,則生成的流是廣播流。

相關用法


注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 Stream<T>.eventTransformed constructor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。