我的要求是這樣的。RxJava->根據條件進行API請求
- 擊中第一個API得到響應。在響應中,我有一個定義狀態的字段,如果設置了該標誌,則進行另一個API調用並與第一個結果合併。
- 如果未設置標誌,則返回實際響應(第一響應)。
如果我使用過濾器,它會忽略錯誤的項目,如果沒有設置標誌,我不想忽略當前的響應。
我們該如何使用RxJava,FlatMap和Filter?
我的要求是這樣的。RxJava->根據條件進行API請求
如果我使用過濾器,它會忽略錯誤的項目,如果沒有設置標誌,我不想忽略當前的響應。
我們該如何使用RxJava,FlatMap和Filter?
你不需要filter
。只需檢查flatMap
中的狀態。如果已設置,請觸發請求並撥打startWith
將其與原始的一個連接(您可以用任何代碼替換startWith
以合併結果)。如果沒有,請使用just
來包裝響應。這裏有一個例子:
class MyResponse {
boolean status;
public MyResponse(boolean status) {
this.status = status;
}
public static Observable<MyResponse> request() {
return Observable.just(new MyResponse(false));
}
}
Observable<MyResponse> response = Observable.just(new MyResponse(false));
response.first().flatMap(r -> {
if (r.status) {
return MyResponse.request().startWith(r);
} else {
return Observable.just(r);
}
});
真棒謝謝了很多...我也一樣:) – sreekumar
只需使用過濾器
RxHelper.toObservable(request1)
.filter(response1 -> response1.status == "200")
.flatMap(response1-> RxHelper.toObservable(request2))
.map(response2 -> //Bla)
});
這不是一個,我正在尋找,無論如何謝謝 – sreekumar
爲什麼標記爲無效?給我一個提示 ?? – sreekumar