Я очень новичок в RxJava, хотя я знаком с потоками и немного с обещаниями Javascript.Я работаю с некоторым существующим кодом, использующим RxJava, и некоторыми комментариями, которые некоторые люди сделали по поводу этого кода.Я хотел бы получить больше информации об этом, пока я продолжаю изучать документацию.
Этот блок такой (некоторые имена изменены):
public ShippingMethodHolder callClientsAsync(ShippingMethodContext shippingContext) {
Single<ShippingMethodResponse> productOneResponseEntity = Single.<ShippingMethodResponse>create(source -> {
source.onSuccess(getProductOneowShippingMethodResponse(shippingContext));
}).subscribeOn(Schedulers.io());
Single<ShippingMethodResponse> productTwoResponseEntity = Single.<ShippingMethodResponse>create(source -> {
source.onSuccess(getProductTwoShippingMethodResponse(shippingContext));
}).subscribeOn(Schedulers.io());
Single<ShippingMethodHolder> singleProductCartResponseHolder = Single.zip(productOneResponseEntity, productTwoResponseEntity,
(dtvResponse, productTwoResponse) -> {
return new ShippingMethodHolder(dtvResponse, productTwoResponse);
});
return singleProductCartResponseHolder.blockingGet();
}
Комментарий сделан по поводуэтот код от людей, более информированных об этом, по существу говорит о том, что здесь отсутствует обработка исключений RxJava «и это приведет к блокировке или падению потока».Я предполагаю, что это относится к тому факту, что два асинхронных вызова имеют вызовы onSuccess (), но не вызывают вызовы onError ().
Однако это кажется мне странным.Область, в которой вызывается onSuccess (), предназначена не для успеха или неудачи бизнес-логики, а для попытки RxJava сделать асинхронный вызов.
Я мог бы воспользоваться некоторыми советами о том, действительно ли это проблемас точки зрения RxJava.