RxJava代码中的条件运算

时间:2017-04-13 07:21:41

标签: java rx-java reactive-programming rx-java2

我是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();

1 个答案:

答案 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();