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)
, кажется, использует метод приемника для добавления aStream
к StreamController
sc.При этом aStream
использует pipe
для добавления к StreamController sc
.
Оба метода, кажется, делают то же самое.Мне кажется, что использование одного метода над другим - это просто стиль.Если вы используете Stream
, pipe
, то StreamController
.Если вы используете StreamController
, потопите Stream
.Есть ли конкретная причина использовать один против другого?