gpt4 book ai didi

dart - 我怎么知道两个流何时完成?

转载 作者:行者123 更新时间:2023-12-01 09:28:17 25 4
gpt4 key购买 nike

我将 Dart 的 Streams 用于异步事件。我有两个流,我想知道两个流何时完成(又名关闭)。我想用 future 来做到这一点。我该怎么做?

最佳答案

一个 StreamSubscription可以用 asFuture 返回一个 Future .当流关闭时,订阅的 future 完成。
使用 Future.wait等待两个流的 future 完成。
下面是一个例子:

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();
});
}

关于dart - 我怎么知道两个流何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19325335/

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