问题描述
我在下面有一连串的出版商。
0 + 1
假设我也和我在一起
Mono<Void> validateCost = validateCost(buyRequest);
Mono<Void> validateBalance = validateBalance(buyRequest);
Mono.when(validateCost,validateBalance)
.then(issuePerk(buyRequest))
.flatMap(issuePerkResponse -> paymentService.doPayment(buyRequest)
.map(paymentDetails -> new IssueAndPayResult(issuePerkResponse.getPerkIssueId(),paymentDetails)))
.flatMap(issueAndPayResult -> saveOrder(issueAndPayResult,buyRequest));
我想要的是
- 如果 issuePerk 失败,让错误传播。
- 如果 paymentService.doPayment 失败,请调用 revertPerkIssue 并让错误传播。
- 如果 saveOrder 失败,请调用 revertPerkIssue 和 revertPayment 并让错误传播。
我不知道该怎么做。我尝试使用 doOnError 但如果任何单声道失败,让我们说问题振作,那么 doOnError 将被调用,这不是我想要的。 此外,我不希望重新评估 issuePerkResponseMono、payResultMono,这在 doOnError 中发生。
Mono<Void> revertPerkIssue(IssuePerkResponse)
Mono<Void> revertPayment(IssueAndPayResult)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)