dart - Dart:我如何获得 Stream 的长度?
问题描述
我想获得 BehaviorSubject 流的长度,但我无法获得。
test('get stream length', ()async{
BehaviorSubject<int> subject = new BehaviorSubject(seedValue: 0);
var act = await subject.stream.length;
expect(act, 1);
});
我怎样才能得到这个长度?
解决方案
流的长度只有在关闭后才能知道。只要它没有关闭,总是有可能添加另一个事件。
https://api.dartlang.org/stable/2.1.1/dart-async/Stream/length.html
长度属性
Future<int> length
此流中的元素数。
等待此流的所有元素。当这个流结束时,返回的 future 完成了元素的数量。
如果此流发出错误,则返回的未来会以该错误完成,并且处理停止。
这个操作监听这个流,一个非广播的流在找到它的长度后就不能被重用。
test('get stream length', ()async{
BehaviorSubject<int> subject = new BehaviorSubject(seedValue: 0);
var actFuture = await subject.stream.length;
await subject.close();
expect(actFuture, completion(equals(1));
});
推荐阅读
- python - 如何使用 python 记录笔压力、笔画长度和使用 Wacom 数位板的 x,y 坐标?
- ios - Swift 布局不一致
- c# - 如何通过 Selenium 根据 html 点击按钮?
- java - 从文件加载 sqlite3 db 的 Java 系统命令失败
- android - 以编程方式将 2+ 个文本字段并排放置在 LinearLayout(水平)中
- reactjs - 为什么父道具不会在动态创建的子组件中更新(生成一次)
- javascript - Javascript中的最佳方法速写或短路
- kotlin - Kotlin 环境价值观
- windows-installer - 如何预先设置属性中未定义的 MSI SecureCustomProperties 以允许静默安装?
- python - 如何检查没有子字符串?