gpt4 book ai didi

dart - 在 Dart 中使用 Sink 和 Pipe 与 Streams 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 02:53:13 26 4
gpt4 key购买 nike

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,请将其通过管道传送到StreamController。如果您使用的是 StreamController,请将 Stream 接收到它。是否有特定的理由使用其中一种而不是另一种?

最佳答案

aStream.pipe(sc) 将在流完成后 close() 流 Controller 。使用 sc.addStream(aStream) Controller 在流完成后仍将打开,因此您可以添加更多事件或其他流。

在这种情况下,对 Stream.pipe 的调用与 sc.addStream(aStream).then((_) sc.close());

关于dart - 在 Dart 中使用 Sink 和 Pipe 与 Streams 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55113677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com