2016年2月26日 星期五

Android 開發 (114) retrofit with rxjava = callback hell?

最近有機會研究了一下retrofit + rxjava ,使用起來真的很方便
不過實際套用到project裡之後,發現了一些可怕的東西


首先我們先看一下下面這段code


我在某個頁面必須發送兩個api,而第二隻api 必須根據前一隻api的結果從相對應的動作,
這樣看起來似乎還好,還算看得懂,雖然中間的if else 有點看不出來是哪隻api的

但是當有三隻四隻五隻互相相依的api那會變怎樣?
















上面的程式碼還沒有加上if else 還有一些邏輯....
我相信大部分的人看到這樣的程式碼加上一堆if else 的話都會直接回應WTF!!!
為了避免之後幫我維護程式碼的其他同事著想
我稍微上網查了一下是否有辦法避掉這個可怕的結構

解法
我們可以使用flapMap operation 來避掉這個問題

如下面的範例



首先,所有api 的邏輯都可以分散在各個 flapmap 而且可以很清楚的看懂,
而且,不會有callback hell的問題



再回來看一下剛剛四隻api的寫法
是不是好懂多了!!

不過今天講的解法只能使用在serial call,至於parallel call 要怎麼處理?

那就是下次的事情了XD

2 則留言:

  1. 這個好棒XD
    我平常用的就是你舉的例子了
    雖然最多只有兩層

    回覆刪除