bind 方法

Stream<T> bind(
  1. Stream<S> stream
)
override

将提供的 stream 转换。

返回一个新的流,该流的事件是从提供的 stream 的事件计算而来。

StreamTransformer 接口完全通用,所以不能说明子类做了什么。每个 StreamTransformer 应该清楚地记录它是如何转换流的(在类或变量用作访问转换器的地方),以及与以下典型行为的任何差异

  • 当监听返回的流时,它开始监听输入的 stream
  • 返回的流的订阅将(在合理的时间内)将 StreamSubscription.pause 调用转发到输入 stream 的订阅。
  • 同样,取消返回的流的订阅最终(在合理的时间内)将取消输入 stream 的订阅。

"合理时间"取决于转换器和流。一些转换器,如"超时"转换器,可能会使这些操作取决于一个持续时间。其他转换器可能根本不会延迟,或者只通过微任务。

转换器可以自由地以任何方式处理错误。转换器实现可以选择传播错误,将它们转换为其他事件,或完全忽略它们,但如果忽略错误,应该在文档中明确说明。

实现

Stream<T> bind(Stream<S> stream) {
  return Stream<T>.eventTransformed(
      stream, (EventSink sink) => _ConverterStreamEventSink(this, sink));
}