2017-04-13 58 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();