我正在使用Dart的Streams进行异步事件.我有两个流,我想知道两个流何时完成(也就是关闭).我想用Futures做这件事.我该怎么做?
A StreamSubscription可以回归未来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 = new StreamController();
StreamController controller2 = new StreamController();
Stream s1 = controller1.stream;
Stream s2 = controller2.stream;
listenOnTwoStreams(s1, s2);
Timer.run(() {
controller1.add("1");
controller2.add("2");
controller1.close();
controller2.close();
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |