首页 > 解决方案 > 是否可以从进入 map/flatMap 的 Observable 返回两种不同的类型?

问题描述

我想知道是否可以做这样的事情:

我有一个返回 Observable 的函数,如下所示:

Observable<JSONObject> = someMethodCall().map( x -> {
/// do something
return new JSONObject().put("id", 12346");
});

现在我想深入,在 //do something 想要添加一些逻辑,所以我可以返回一个Observable.error,为此我不能使用map但是 flatMap,我想知道是否有任何方法可以使用 flatMap 来处理这种行为?

标签: javalambdajava-8java-streamrx-java

解决方案


假设您希望通过 传播错误onError,以便您可以使用onErrorReturnor之类的东西onErrorResumeNext,您可以flatMap像这样使用:

Observable<JSONObject> = someMethodCall().flatMap( x -> {
    try {
      //do something....
      return Observable.just(new JSONObject().put("id", 12346"));
    } catch (Throwable t) {
      return Observable.error(t);
    }
  });

推荐阅读