2017-04-13 2 views
-1

저는 RxJava를 처음 사용하고 있으며 종종 아래 조건부 연산과 같은 솔루션을 사용하고 있습니다. 여기에 두 개의 호출을 차례로 연결 한 다음 호출 체인의 결과가 무엇인지에 따라 int를 반환하려고합니다. 이 코드를 향상시키는 "rxified"방법이 있습니까? @ andrei-에 의해 제안으로 받아 들여 확인하기 위해 논리를 이동 한 후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

/거부 됨 주문 (필자는 아직 현재의 값을 밀어 수있는 기존의 응용 프로그램에하는 int 결과를 전달하고있어 이후 여기 blockingSingle 사용) macarie, 코드는 이제 다음과 같이 보입니다.

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