rx java 新手。我有這樣的代碼,其中有一個事件列表,我需要執(zhí)行一項(xiàng)操作,然后將響應(yīng)與所調(diào)用的事件相匹配。我在線上收到編譯錯誤: .subscribe(value -> matchResponse(event, value));當(dāng)然這是有道理的,此時事件未知,有沒有辦法讓我訪問傳遞給performOperation函數(shù)的事件,以便我可以執(zhí)行我的匹配響應(yīng)。public void perforomObservableOperations(List<Event> events) {Observable.from(events) .flatMap(this::performOperation, 10) .retry(10) .toBlocking() .subscribe(value -> matchResponse(event, value)); }private void matchResponse(Event event, Integer value) { eboxEvent.setValue(value); } private Observable<Integer> performOperation(Event event) { if (event == null) { return Observable.empty(); } return xyz.getValue(event).toObservable(); }如果有更好的方法來做到這一點(diǎn),我很想知道。本質(zhì)上是使用 rxjava 來幫助我重試,這xyz是一個讓我能夠打開斷路器的 hystrix 對象。
1 回答

繁星淼淼
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個贊
您可以創(chuàng)建一個簡單的類來存儲event和value:
class Store {
Event event;
Integer value;
Store(Event event, Integer value) {
this.event = event;
this.value = value;
}
}
您也可以使用Pair,Map.Entry或類似的東西來代替。那么你必須以適當(dāng)?shù)姆绞竭M(jìn)行performOperation改變:matchResponse
private void matchResponse(Store store) {
}
private Observable<Store> performOperation(Event event) {
if (event == null) {
return Observable.empty();
}
return xyz.getValue(event).toObservable().map((value) -> new Store(event, value));
}
添加回答
舉報
0/150
提交
取消