我是RxJava的新手,经常发现自己采用下面的解决方案进行条件操作。在这里,我想按顺序链接两个调用,然后根据调用链的结果返回一个int。是否有任何" rxified"改进这段代码的方法? (在这里使用blockingSingle,因为我将结果int传递给遗传应用程序,我还不能将值推送到其中)
return restApiAdapter.closePosition(request)
.flatMap(dealReference -> restApiAdapter.getDealConfirmationObservable(dealReference.getValue())
.map(dealConfirmationResponse -> {
if (dealConfirmationResponse.getDealStatus() == DealStatus.ACCEPTED) {
return SUCCESS.getValue();
} else {
return FAIL.getValue();
}
})
)
.onErrorReturn(e -> ZorroReturnValues.BROKER_SELL_FAIL.getValue())
.blockingSingle();
答案 0 :(得分:0)
按照@ andrei-macarie的建议移动逻辑以检查ACCEPTED / REJECTED命令后,代码现在看起来更像是
return restApiAdapter.closePosition(request)
.flatMap(dealReference -> restApiAdapter.getDealConfirmationObservable(dealReference.getValue())
.map(dealConfirmationResponse -> SUCCESS.getValue()
)
.onErrorReturn(e -> FAIL.getValue())
.blockingSingle();