如何... Rxjava的可流动过程获取计数

时间:2018-11-21 11:51:52

标签: rx-java rx-java2

我从呼叫中收到了一个可流动的信息...现在,我想检查我收到了多少个项目,然后根据该项目进行处理。我知道从可流动对象中我可以获得单个计数,但是我不确定如何以Rx方式将其链接起来。

以下内容不起作用...但是对Rx来说是一个完全菜鸟:(

  Flowable<Data> dataFlowable = reporter.findData();

  Long count = dataFlowable
      .count()
      .blockingGet();

    if(count > 0) {
     // do something with the flowable returned
        dataFlowable.map(.....);
    }

或者我可以执行以下操作:

dataFlowable.toList().map(list -> processList(list));

public void processList(List<Data> list) {

  if(list.size() > 0){
    // do something with list
  }

有想法吗?

1 个答案:

答案 0 :(得分:1)

如果要在计数检查后进一步处理接收到的数据,可以在toList()之后使用filter():

dataFlowable
    .toList() // returns Single<List<Data>>
    .filter(list -> list.size() > 0) // returns Maybe<List<Data>>
    .map(list -> {
        // only called if Maybe contains data (filter condition is true)
        // do something with list
    });