我有pay
方法,在此方法中,我应该调用initializePayment,在onSuccess
中,我应该调用confirmPayment
。
如果两个调用中的任何一个发生异常,它都应该发出异常
public Single<PayResponse> pay(PayRequest apiRequest) {
return client.initiatePayment(apiRequest)
.doOnSuccess(initiatePaymentResponse -> {
client.confirmPayment(initiatePaymentResponse.getPaymentId())
.doOnSuccess(confirmPaymentResponse -> doConfirmationLogic(confirmPaymentResponse ))
.doOnError(ex -> {ex.printStackTrace();logError(ex);});
})
.doOnError(ex -> {ex.printStackTrace();logError(ex);});
}
在我引用的代码中,confirmPayment
中发生错误,但initiatePayment
正常地继续。
如何将异常从内部 doOnError
传播到外部 doOnError
?
答案 0 :(得分:1)
doOnXxx ()方法仅用于回调目的,并且不涉及流传输管道,因此它们被称为“副作用方法”。因此无法将错误从doOnXxx()传播到上游。
错误始终是Rx世界中的终端事件,每当发生错误时,管道都会被取消,因此无需对doOnSuccess()方法做任何事情以确保到目前为止一切都正常。因此,除了将代码嵌套到doOnSuccess()链中之外,您可以简单地编写以下方式:
192.168.122.1