【发布时间】:2016-09-06 03:48:06
【问题描述】:
我有一个流,我正在观察用户选择的业务。当没有选择业务时,它应该发出null。这是一个 hot observable,所以它永远不会终止。
@Override
public Observable<Business> observeSelected() {
return selectedDb.observe()
.flatMap(businessId -> observe(businessId);
}
这里有两个重要的方法调用
Observable<String> selectedDb.observe()
返回所选业务的String businessId,如果没有选择业务,则返回null。
-
Observable<Business> observe(String businessId)返回带有#1 的businessId的Business,如果没有找到具有指定ID 的业务,则返回null
如果#1 或#2 发出null,我希望整个方法发出一次null。
显然,当#1 或#2 发出空值时,此代码将抛出NullPointerException。我可以用空检查乱扔上面的代码并发出空值,但这会使它变得非常难看。有没有办法用 RxJava 只捕获 NullPointer 异常?我可以使用.filter() 来防止发出空值,但我仍然想在未选择任何业务时发出onNext(null)。
这里的最佳做法是什么?
【问题讨论】:
标签: rx-java