我从呼叫中收到了一个可流动的信息...现在,我想检查我收到了多少个项目,然后根据该项目进行处理。我知道从可流动对象中我可以获得单个计数,但是我不确定如何以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
}
有想法吗?
答案 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
});