【发布时间】:2017-09-08 11:14:09
【问题描述】:
我正在尝试过滤可能为空或不为空的列表(或该项目不在列表中)。 inboxData 被另一个 observable 填充:
private BehaviorSubject<InboxResponse> inboxData = BehaviorSubject.create();
public Observable<Item> getInboxItem(String id) {
return inboxData
.flatMap(response -> Observable.from(response.getData()))
.filter(item -> item.getId().equals(id))
.firstOrDefault(null);
}
在这种情况下,如果 response.getData() 为空 firstOrDefault 永远不会运行。但为什么?它清楚地表明,如果前面的 observable 什么都不发出,它会返回默认值。
【问题讨论】:
-
@Kiskae 的回答是正确的。另外,请注意,一旦您在
BehaviorSubject上调用onCompleted,所有后续观察者将只会收到onCompleted,而不会收到任何数据。我不确定Subject是您在此处寻找的内容。
标签: java android list rx-java rx-java2