为了账号安全,请及时绑定邮箱和手机立即绑定

可观察,从列表中访问输入

可观察,从列表中访问输入

慕哥6287543 2023-06-21 16:06:35
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));

}


查看完整回答
反对 回复 2023-06-21
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信