首页 > 解决方案 > Dart:我如何获得 Stream 的长度?

问题描述

我想获得 BehaviorSubject 流的长度,但我无法获得。

test('get stream length', ()async{
    BehaviorSubject<int> subject = new BehaviorSubject(seedValue: 0);

    var act = await subject.stream.length;

    expect(act, 1);
  }); 

我怎样才能得到这个长度?

标签: dartrxdart

解决方案


流的长度只有在关闭后才能知道。只要它没有关闭,总是有可能添加另一个事件。

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

推荐阅读