rx java 新手。我有這樣的代碼,其中有一個事件列表,我需要執行一項操作,然后將響應與所調用的事件相匹配。我在線上收到編譯錯誤: .subscribe(value -> matchResponse(event, value));當然這是有道理的,此時事件未知,有沒有辦法讓我訪問傳遞給performOperation函數的事件,以便我可以執行我的匹配響應。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(); }如果有更好的方法來做到這一點,我很想知道。本質上是使用 rxjava 來幫助我重試,這xyz是一個讓我能夠打開斷路器的 hystrix 對象。
1 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
您可以創建一個簡單的類來存儲event和value:
class Store {
Event event;
Integer value;
Store(Event event, Integer value) {
this.event = event;
this.value = value;
}
}
您也可以使用Pair,Map.Entry或類似的東西來代替。那么你必須以適當的方式進行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
提交
取消