非同期イベントに Dart の Streams を使用しています。2 つのストリームがあり、両方のストリームがいつ完了するか (つまり、閉じられるか) を知りたいです。Futuresでこれをやりたいです。どうすればいいのですか?
質問する
2150 次
1 に答える
13
AStreamSubscription
は で Future を返すことができasFuture
ます。ストリームが閉じられると、サブスクリプションの将来が完了します。
Future.wait
両方のストリームの先物が完了するのを待つために使用します。
次に例を示します。
import 'dart:async';
Future listenOnTwoStreams(Stream s1, Stream s2) {
StreamSubscription sub1 = s1.listen((e) => print(e));
StreamSubscription sub2 = s2.listen((e) => print(e));
Future f1 = sub1.asFuture();
Future f2 = sub2.asFuture();
return Future.wait([f1, f2]).then((e) => print("all done!"));
}
void main() {
StreamController controller1 = StreamController();
StreamController controller2 = StreamController();
Stream s1 = controller1.stream;
Stream s2 = controller2.stream;
listenOnTwoStreams(s1, s2);
Timer.run(() {
controller1.add("1");
controller2.add("2");
controller1.close();
controller2.close();
});
}
于 2013-10-11T18:58:35.310 に答える