Dart:你如何让 Future 等待 Stream?
Posted
技术标签:
【中文标题】Dart:你如何让 Future 等待 Stream?【英文标题】:Dart: How do you make a Future wait for a Stream? 【发布时间】:2018-09-18 06:46:17 【问题描述】:我想等待 bool 为真,然后从 Future 返回,但我似乎无法让我的 Future 等待 Stream。
Future<bool> ready()
return new Future<bool>(()
StreamSubscription readySub;
_readyStream.listen((aBool)
if (aBool)
return true;
);
);
【问题讨论】:
【参考方案1】:您可以使用 Stream 方法 firstWhere
创建一个未来,当您的 Stream 发出 true
值时解析。
Future<bool> whenTrue(Stream<bool> source)
return source.firstWhere((bool item) => item);
没有流方法的替代实现可以在流上使用await for
语法。
Future<bool> whenTrue(Stream<bool> source) async
await for (bool value in source)
if (value)
return value;
// stream exited without a true value, maybe return an exception.
【讨论】:
我们是否必须为它创建一个未来的构建器?【参考方案2】:Future<void> _myFuture() async
Completer<void> _complete = Completer();
Stream.value('value').listen((event) ).onDone(()
_complete.complete();
);
return _complete.future;
【讨论】:
以上是关于Dart:你如何让 Future 等待 Stream?的主要内容,如果未能解决你的问题,请参考以下文章