是否有可能 return 两种不同类型的 Observable 进入 map/flatMap?

Is it possible to return two different kinds of types from an Observable that goes into a map/flatMap?

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

我有一个 return 像这样的 Observable 函数:

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

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

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

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