【发布时间】:2019-08-02 11:09:21
【问题描述】:
import "dart:async";
import "dart:html";
void main() async {
InputElement addStream = querySelector("#addstream");
Stream<int> aStream = _someStream();
StreamController<int> sc = StreamController();
sc.stream.listen((e) => print(e));
addStream.onClick.listen((e) {
sc.sink.addStream(aStream); // streamcontroller brings in stream through the sink
// aStream.pipe(sc); // stream going into streamcontroller through the sink
});
}
在上面的代码中,sc.sink.addStream(aStream) 似乎是使用 sink 方法将aStream 添加到StreamController sc。
在此之下,aStream 使用pipe 被添加到StreamController sc。
这两种方法似乎都做同样的事情。在我看来,使用一种方法而不是另一种方法只是风格。如果您使用的是Stream,则pipe 将其转至StreamController。如果您使用的是StreamController,请将Stream 沉入其中。使用一个与另一个有什么特别的原因吗?
【问题讨论】:
-
请注意
sc.sink与sc相同。所以sc.sink.addStream(aStream)和sc.addStream(aStream);是一样的