我想从两个api并行获取数据 .

Single<TodayDataEntry> todayDataEntrySingle = openWeatherApi.getTodayData(
            "London,uk", FetchDataUtil.API_KEY).subscribeOn(Schedulers.io());

Single<ListWrapper<ForecastDataEntry>> forecastDataEntrySingle = openWeatherApi.getForecastData(
            "London,uk", FetchDataUtil.API_KEY).subscribeOn(Schedulers.io());

Single<DataAll> observable = Single.zip(
        todayDataEntrySingle,
            forecastDataEntrySingle,(t1, t2) -> {
                return new DataAll(t2.getList(), t1);
        }).subscribeOn(Schedulers.io());
  • 订阅后,如果两个api请求都失败(如果没有互联网连接),则不会处理其中一个错误信号(即使onError被调用),导致应用程序崩溃 . 但是,如果我使用Observable <>而不是Single <>,则会处理错误并且不会抛出异常 . 我的实施有问题吗?

  • 如果我没有为单个observable调用subscribeOn(Schedulers.io)而只是调用zipped,则不会抛出异常 . 但是AFAIK,在这种情况下api请求不是并行的 .