rch*_*hkm 2 pipe stream dart sink
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
});
}
Run Code Online (Sandbox Code Playgroud)
上面的代码中,sc.sink.addStream(aStream)好像是用sink方法添加aStream到StreamControllersc。在此之下,aStream用于pipe添加到StreamController sc.
这两种方法似乎都在做同样的事情。在我看来,使用一种方法而不是另一种方法就是一种风格。如果您使用的是Stream,pipe则将其添加到StreamController. 如果您正在使用 a StreamController,请将 a下沉Stream到它。使用一个与另一个有什么特殊的理由吗?
aStream.pipe(sc)将close()该流之后流控制器结束。随着sc.addStream(aStream)控制器仍然是开放的流完成后,这样你就可以添加更多的事件或其他流。
Stream.pipe在这种情况下,调用将与sc.addStream(aStream).then((_) sc.close());
| 归档时间: |
|
| 查看次数: |
647 次 |
| 最近记录: |