2017-04-13 40 views
-1

我是RxJava的新手,经常发现自己采用类似于下面的解决方案的解决方案来进行条件操作。在这里,我想按顺序链接两个调用,然后根据调用链的结果返回一个int。是否有任何“rxified”的方式来改善此代码? (这里使用blockingSingle因为我使所得INT到遗留应用到我不能推值作为尚未)RxJava代码中的有条件操作

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

这里有很多不相关的代码,使得很难看到与您的问题相关的重要RxJava方面。你可以大大简化这个吗? –

+0

哇,这是一个代码的地狱:) - 检查固体原则和清洁代码准则。 – andreim

+0

简化的例子,现在更清楚了吗? @ andrei-macarie那不是我所要求的 – Daniel

回答

0

移动逻辑后检查ACCEPTED/REJECTED订单由@ andrei-所建议马卡里,代码现在看起来更像这样

return restApiAdapter.closePosition(request) 
      .flatMap(dealReference -> restApiAdapter.getDealConfirmationObservable(dealReference.getValue()) 
       .map(dealConfirmationResponse -> SUCCESS.getValue() 
      ) 
      .onErrorReturn(e -> FAIL.getValue()) 
      .blockingSingle();